summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/audio/bucklespring/default.nix63
-rw-r--r--pkgs/applications/audio/librespot/cargo-lock.patch3908
-rw-r--r--pkgs/applications/audio/librespot/default.nix7
-rw-r--r--pkgs/applications/audio/mopidy/default.nix2
-rw-r--r--pkgs/applications/audio/mopidy/podcast.nix31
-rw-r--r--pkgs/applications/audio/musikcube/default.nix8
-rw-r--r--pkgs/applications/blockchains/bitcoin.nix4
-rw-r--r--pkgs/applications/blockchains/miniscript/default.nix29
-rw-r--r--pkgs/applications/blockchains/monero-gui/default.nix26
-rw-r--r--pkgs/applications/blockchains/monero-gui/use-system-libquirc.patch37
-rw-r--r--pkgs/applications/blockchains/monero/default.nix4
-rw-r--r--pkgs/applications/editors/bluej/default.nix4
-rw-r--r--pkgs/applications/editors/emacs-modes/emacs2nix.nix4
-rw-r--r--pkgs/applications/editors/emacs-modes/melpa-packages.nix3
-rw-r--r--pkgs/applications/editors/emacs-modes/update-melpa.el5
-rw-r--r--pkgs/applications/editors/neovim/default.nix4
-rw-r--r--pkgs/applications/editors/neovim/neovim-qt.nix4
-rw-r--r--pkgs/applications/editors/neovim/neovim-remote.nix23
-rw-r--r--pkgs/applications/editors/neovim/qt.nix3
-rw-r--r--pkgs/applications/editors/neovim/utils.nix17
-rw-r--r--pkgs/applications/editors/neovim/wrapper.nix8
-rw-r--r--pkgs/applications/editors/thonny/default.nix4
-rw-r--r--pkgs/applications/editors/vscode/generic.nix70
-rw-r--r--pkgs/applications/gis/qmapshack/default.nix6
-rw-r--r--pkgs/applications/gis/qmapshack/pr350-support-quazip-1x.patch141
-rw-r--r--pkgs/applications/graphics/foxotron/default.nix6
-rw-r--r--pkgs/applications/graphics/nomacs/default.nix9
-rw-r--r--pkgs/applications/graphics/openboard/default.nix3
-rw-r--r--pkgs/applications/misc/authenticator/default.nix99
-rw-r--r--pkgs/applications/misc/dbeaver/default.nix18
-rw-r--r--pkgs/applications/misc/googleearth-pro/default.nix156
-rw-r--r--pkgs/applications/misc/ideamaker/default.nix5
-rw-r--r--pkgs/applications/misc/mako/default.nix9
-rw-r--r--pkgs/applications/misc/metadata-cleaner/default.nix4
-rw-r--r--pkgs/applications/misc/xplr/default.nix6
-rw-r--r--pkgs/applications/networking/browsers/chromium/browser.nix1
-rw-r--r--pkgs/applications/networking/browsers/firefox-bin/default.nix2
-rw-r--r--pkgs/applications/networking/browsers/vivaldi/default.nix9
-rw-r--r--pkgs/applications/networking/cluster/kubelogin-oidc/default.nix6
-rw-r--r--pkgs/applications/networking/cluster/tektoncd-cli/default.nix6
-rw-r--r--pkgs/applications/networking/flexget/default.nix5
-rw-r--r--pkgs/applications/networking/instant-messengers/slack/default.nix8
-rw-r--r--pkgs/applications/networking/instant-messengers/teamspeak/client.nix2
-rw-r--r--pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix8
-rw-r--r--pkgs/applications/networking/instant-messengers/zoom-us/default.nix6
-rw-r--r--pkgs/applications/networking/pcloud/default.nix3
-rw-r--r--pkgs/applications/networking/remote/citrix-workspace/generic.nix3
-rw-r--r--pkgs/applications/office/timeular/default.nix12
-rw-r--r--pkgs/applications/science/biology/dcm2niix/default.nix4
-rw-r--r--pkgs/applications/science/logic/lean/default.nix4
-rw-r--r--pkgs/applications/science/misc/rink/default.nix6
-rw-r--r--pkgs/applications/science/physics/xfitter/default.nix7
-rw-r--r--pkgs/applications/science/robotics/sumorobot-manager/default.nix11
-rw-r--r--pkgs/applications/system/glances/default.nix10
-rw-r--r--pkgs/applications/version-management/git-and-tools/git-machete/default.nix4
-rw-r--r--pkgs/applications/version-management/redmine/Gemfile.lock16
-rw-r--r--pkgs/applications/version-management/redmine/default.nix4
-rw-r--r--pkgs/applications/version-management/redmine/gemset.nix32
-rw-r--r--pkgs/applications/video/makemkv/default.nix4
-rw-r--r--pkgs/applications/virtualization/cloud-hypervisor/default.nix6
-rw-r--r--pkgs/applications/virtualization/open-vm-tools/default.nix4
-rw-r--r--pkgs/applications/window-managers/river/default.nix73
-rw-r--r--pkgs/build-support/build-fhs-userenv-bubblewrap/default.nix12
-rw-r--r--pkgs/data/documentation/man-pages-posix/default.nix9
-rw-r--r--pkgs/data/icons/tela-icon-theme/default.nix12
-rw-r--r--pkgs/desktops/lxqt/lxqt-powermanagement/default.nix4
-rw-r--r--pkgs/desktops/lxqt/obconf-qt/default.nix4
-rw-r--r--pkgs/desktops/mate/mate-session-manager/default.nix4
-rw-r--r--pkgs/desktops/xfce/applications/gigolo/default.nix9
-rw-r--r--pkgs/desktops/xfce/core/thunar/default.nix2
-rw-r--r--pkgs/desktops/xfce/default.nix3
-rw-r--r--pkgs/development/compilers/nim/default.nix4
-rw-r--r--pkgs/development/compilers/ophis/default.nix2
-rw-r--r--pkgs/development/interpreters/mujs/default.nix4
-rw-r--r--pkgs/development/libraries/cjose/default.nix40
-rw-r--r--pkgs/development/libraries/clanlib/default.nix50
-rw-r--r--pkgs/development/libraries/geoclue/add-option-for-installation-sysconfdir.patch7
-rw-r--r--pkgs/development/libraries/geoclue/default.nix80
-rw-r--r--pkgs/development/libraries/grpc/default.nix4
-rw-r--r--pkgs/development/libraries/hyperscan/default.nix4
-rw-r--r--pkgs/development/libraries/libadwaita/default.nix67
-rw-r--r--pkgs/development/libraries/libfaketime/default.nix1
-rw-r--r--pkgs/development/libraries/netcdf-cxx4/default.nix15
-rw-r--r--pkgs/development/libraries/ogre/default.nix4
-rw-r--r--pkgs/development/libraries/openscenegraph/default.nix4
-rw-r--r--pkgs/development/libraries/py3c/default.nix7
-rw-r--r--pkgs/development/libraries/quazip/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/ppx_deriving_cmdliner/default.nix41
-rw-r--r--pkgs/development/python-modules/autoit-ripper/default.nix36
-rw-r--r--pkgs/development/python-modules/beancount_docverif/default.nix5
-rw-r--r--pkgs/development/python-modules/csvw/default.nix4
-rw-r--r--pkgs/development/python-modules/flask-httpauth/default.nix12
-rw-r--r--pkgs/development/python-modules/flask-restx/default.nix5
-rw-r--r--pkgs/development/python-modules/graphene/default.nix8
-rw-r--r--pkgs/development/python-modules/grpcio-tools/default.nix4
-rw-r--r--pkgs/development/python-modules/karton-autoit-ripper/default.nix46
-rw-r--r--pkgs/development/python-modules/poppler-qt5/default.nix60
-rw-r--r--pkgs/development/python-modules/poppler-qt5/poppler-include-dir.patch12
-rw-r--r--pkgs/development/python-modules/pynmea2/default.nix6
-rw-r--r--pkgs/development/python-modules/pytmx/default.nix16
-rw-r--r--pkgs/development/python-modules/pywizlight/default.nix6
-rw-r--r--pkgs/development/tools/ecpdap/default.nix16
-rw-r--r--pkgs/development/tools/ecpdap/lock-update.patch345
-rw-r--r--pkgs/development/tools/electron/default.nix28
-rw-r--r--pkgs/development/tools/frugal/default.nix24
-rw-r--r--pkgs/development/tools/go-tools/default.nix6
-rw-r--r--pkgs/development/tools/knightos/mkrom/default.nix12
-rw-r--r--pkgs/development/tools/knightos/scas/default.nix5
-rw-r--r--pkgs/development/tools/krankerl/default.nix6
-rw-r--r--pkgs/development/tools/misc/hydra/default.nix6
-rw-r--r--pkgs/development/tools/rgp/default.nix9
-rw-r--r--pkgs/development/tools/rust/cargo-msrv/default.nix41
-rw-r--r--pkgs/development/tools/rust/cargo-rr/default.nix40
-rw-r--r--pkgs/development/web/cypress/default.nix2
-rwxr-xr-xpkgs/development/web/cypress/update.sh10
-rw-r--r--pkgs/development/web/nodejs/nodejs.nix1
-rw-r--r--pkgs/games/methane/default.nix70
-rw-r--r--pkgs/games/osu-lazer/default.nix4
-rw-r--r--pkgs/games/osu-lazer/deps.nix286
-rw-r--r--pkgs/os-specific/linux/bpftool/default.nix30
-rw-r--r--pkgs/os-specific/linux/bpftools/default.nix38
-rw-r--r--pkgs/os-specific/linux/busybox/default.nix10
-rw-r--r--pkgs/os-specific/linux/cifs-utils/default.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/manual-config.nix2
-rw-r--r--pkgs/os-specific/linux/lxc/default.nix4
-rw-r--r--pkgs/os-specific/linux/lxcfs/default.nix4
-rw-r--r--pkgs/servers/dante/default.nix4
-rw-r--r--pkgs/servers/http/trafficserver/default.nix207
-rw-r--r--pkgs/servers/matrix-dendrite/default.nix23
-rw-r--r--pkgs/servers/mautrix-signal/default.nix2
-rw-r--r--pkgs/servers/misc/airsonic/default.nix6
-rw-r--r--pkgs/servers/mx-puppet-discord/default.nix45
-rwxr-xr-xpkgs/servers/mx-puppet-discord/generate.sh21
-rw-r--r--pkgs/servers/mx-puppet-discord/node-composition.nix17
-rw-r--r--pkgs/servers/mx-puppet-discord/node-packages.nix3616
-rw-r--r--pkgs/servers/nosql/cassandra/generic.nix31
-rw-r--r--pkgs/shells/bash/undistract-me/default.nix79
-rw-r--r--pkgs/tools/admin/lego/default.nix6
-rw-r--r--pkgs/tools/admin/rset/default.nix48
-rw-r--r--pkgs/tools/admin/rset/paths.patch131
-rw-r--r--pkgs/tools/graphics/agi/default.nix4
-rw-r--r--pkgs/tools/graphics/pngquant/default.nix11
-rw-r--r--pkgs/tools/graphics/quirc/default.nix52
-rw-r--r--pkgs/tools/graphics/xcolor/default.nix26
-rw-r--r--pkgs/tools/misc/handlr/default.nix6
-rw-r--r--pkgs/tools/misc/krapslog/default.nix6
-rw-r--r--pkgs/tools/misc/librespeed-cli/default.nix6
-rw-r--r--pkgs/tools/misc/neofetch/default.nix1
-rw-r--r--pkgs/tools/misc/piston-cli/default.nix4
-rw-r--r--pkgs/tools/misc/rename/default.nix10
-rw-r--r--pkgs/tools/misc/starship/default.nix6
-rw-r--r--pkgs/tools/misc/ytfzf/default.nix4
-rw-r--r--pkgs/tools/misc/zoxide/default.nix14
-rw-r--r--pkgs/tools/networking/babeld/default.nix26
-rw-r--r--pkgs/tools/networking/grpcurl/default.nix6
-rw-r--r--pkgs/tools/package-management/nix/default.nix6
-rw-r--r--pkgs/tools/security/clevis/default.nix20
-rw-r--r--pkgs/tools/security/gopass/default.nix19
-rw-r--r--pkgs/tools/security/rage/default.nix11
-rw-r--r--pkgs/tools/text/link-grammar/default.nix26
-rw-r--r--pkgs/tools/text/ripgrep/default.nix6
-rw-r--r--pkgs/tools/typesetting/tex/texlive/bin.nix40
-rw-r--r--pkgs/tools/typesetting/tex/texlive/default.nix3
-rw-r--r--pkgs/top-level/aliases.nix1
-rw-r--r--pkgs/top-level/all-packages.nix53
-rw-r--r--pkgs/top-level/coq-packages.nix4
-rw-r--r--pkgs/top-level/ocaml-packages.nix2
-rw-r--r--pkgs/top-level/perl-packages.nix10
-rw-r--r--pkgs/top-level/python-packages.nix6
169 files changed, 10002 insertions, 1229 deletions
diff --git a/pkgs/applications/audio/bucklespring/default.nix b/pkgs/applications/audio/bucklespring/default.nix
new file mode 100644
index 00000000000..ee363c5c32e
--- /dev/null
+++ b/pkgs/applications/audio/bucklespring/default.nix
@@ -0,0 +1,63 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+
+, legacy ? false
+, libinput
+
+, pkg-config
+, makeWrapper
+
+, openal
+, alure
+, libXtst
+, libX11
+}:
+
+let
+  inherit (lib) optionals;
+in
+stdenv.mkDerivation rec {
+  pname = "bucklespring";
+  version = "1.5.0";
+
+  src = fetchFromGitHub {
+    owner = "zevv";
+    repo = pname;
+    rev = version;
+    sha256 = "114dib4npb7r1z2zd1fwsx71xbf9r6psxqd7n7590cwz1w3r51mz";
+  };
+
+  nativeBuildInputs = [ pkg-config makeWrapper ];
+
+  buildInputs = [ openal alure ]
+    ++ optionals (legacy) [ libXtst libX11 ]
+    ++ optionals (!legacy) [ libinput ];
+
+  makeFlags = optionals (!legacy) [ "libinput=1" ];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/wav
+    cp -r $src/wav $out/share/.
+    install -D ./buckle.desktop $out/share/applications/buckle.desktop
+    install -D ./buckle $out/bin/buckle
+    wrapProgram $out/bin/buckle --add-flags "-p $out/share/wav"
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Nostalgia bucklespring keyboard sound";
+    longDescription = ''
+      When built with libinput (wayland or bare console),
+      users need to be in the input group to use this:
+      <code>users.users.alice.extraGroups = [ "input" ];</code>
+    '';
+    homepage = "https://github.com/zevv/bucklespring";
+    license = licenses.gpl2Only;
+    platforms  = platforms.unix;
+    maintainers = [ maintainers.evils ];
+  };
+}
diff --git a/pkgs/applications/audio/librespot/cargo-lock.patch b/pkgs/applications/audio/librespot/cargo-lock.patch
index 129ba96987a..0c2af8f80c6 100644
--- a/pkgs/applications/audio/librespot/cargo-lock.patch
+++ b/pkgs/applications/audio/librespot/cargo-lock.patch
@@ -1,137 +1,3817 @@
-diff --git a/Cargo.lock b/Cargo.lock
-index 533b47d..9c9c2f6 100644
---- a/Cargo.lock
-+++ b/Cargo.lock
-@@ -932,7 +932,7 @@ dependencies = [
+--- source/Cargo.lock	1970-01-01 01:00:01.000000000 +0100
++++ ../nix-build-librespot-0.1.6.drv-0/source/Cargo.lock	2021-04-27 19:07:38.535244188 +0200
+@@ -4,2784 +4,2782 @@
+ name = "aes"
+ version = "0.3.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "54eb1d8fe354e5fc611daf4f2ea97dd45a765f4f1e4512306ec183ae2e8f20c9"
+ dependencies = [
+- "aes-soft 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "aesni 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "aes-soft",
++ "aesni",
++ "block-cipher-trait",
+ ]
+ 
+ [[package]]
+ name = "aes-ctr"
+ version = "0.3.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d2e5b0458ea3beae0d1d8c0f3946564f8e10f90646cf78c06b4351052058d1ee"
+ dependencies = [
+- "aes-soft 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "aesni 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "ctr 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "aes-soft",
++ "aesni",
++ "ctr",
++ "stream-cipher",
+ ]
+ 
+ [[package]]
+ name = "aes-soft"
+ version = "0.3.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cfd7e7ae3f9a1fb5c03b389fc6bb9a51400d0c13053f0dca698c832bfd893a0d"
+ dependencies = [
+- "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "block-cipher-trait",
++ "byteorder",
++ "opaque-debug",
+ ]
+ 
+ [[package]]
+ name = "aesni"
+ version = "0.6.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2f70a6b5f971e473091ab7cfb5ffac6cde81666c4556751d8d5620ead8abf100"
+ dependencies = [
+- "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "block-cipher-trait",
++ "opaque-debug",
++ "stream-cipher",
+ ]
+ 
+ [[package]]
+ name = "alga"
+ version = "0.9.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4f823d037a7ec6ea2197046bafd4ae150e6bc36f9ca347404f46a46823fa84f2"
+ dependencies = [
+- "approx 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-complex 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "approx",
++ "num-complex",
++ "num-traits",
+ ]
+ 
+ [[package]]
+ name = "alsa"
+ version = "0.2.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b4a0d4ebc8b23041c5de9bc9aee13b4bad844a589479701f31a5934cfe4aeb32"
+ dependencies = [
+- "alsa-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "nix 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "alsa-sys",
++ "bitflags 0.9.1",
++ "libc",
++ "nix",
+ ]
+ 
+ [[package]]
+ name = "alsa-sys"
+ version = "0.1.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b0edcbbf9ef68f15ae1b620f722180b82a98b6f0628d30baa6b8d2a5abc87d58"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
++ "pkg-config",
+ ]
+ 
+ [[package]]
+ name = "approx"
+ version = "0.3.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f0e60b75072ecd4168020818c0107f2857bb6c4e64252d8d3983f6263b40a5c3"
+ dependencies = [
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-traits",
+ ]
+ 
+ [[package]]
+ name = "arc-swap"
+ version = "0.4.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4d25d88fd6b8041580a654f9d0c581a047baee2b3efee13275f2fc392fc75034"
+ 
+ [[package]]
+ name = "atty"
+ version = "0.2.14"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+ dependencies = [
+- "hermit-abi 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "hermit-abi",
++ "libc",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "autocfg"
+ version = "0.1.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2"
+ 
+ [[package]]
+ name = "autocfg"
+ version = "1.0.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d"
+ 
+ [[package]]
+ name = "base64"
+ version = "0.9.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643"
+ dependencies = [
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byteorder",
++ "safemem",
+ ]
+ 
+ [[package]]
+ name = "base64"
+ version = "0.10.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e"
+ dependencies = [
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byteorder",
+ ]
+ 
+ [[package]]
+ name = "bindgen"
+ version = "0.53.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c72a978d268b1d70b0e963217e60fdabd9523a941457a6c42a7315d15c7e89e5"
+ dependencies = [
+- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "cexpr 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "clang-sys 0.29.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "proc-macro2 1.0.19 (registry+https://github.com/rust-lang/crates.io-index)",
+- "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "regex 1.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rustc-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "shlex 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1",
++ "cexpr",
++ "cfg-if",
++ "clang-sys",
++ "lazy_static",
++ "lazycell",
++ "peeking_take_while",
++ "proc-macro2 1.0.19",
++ "quote 1.0.7",
++ "regex",
++ "rustc-hash",
++ "shlex",
+ ]
+ 
+ [[package]]
+ name = "bit-set"
+ version = "0.5.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6e11e16035ea35e4e5997b393eacbf6f63983188f7a2ad25bfb13465f5ad59de"
+ dependencies = [
+- "bit-vec 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bit-vec",
+ ]
+ 
+ [[package]]
+ name = "bit-vec"
+ version = "0.6.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5f0dc55f2d8a1a85650ac47858bb001b4c0dd73d79e3c455a842925e68d29cd3"
+ 
+ [[package]]
+ name = "bitflags"
+ version = "0.7.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d"
+ 
+ [[package]]
+ name = "bitflags"
+ version = "0.9.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5"
+ 
+ [[package]]
+ name = "bitflags"
+ version = "1.2.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
+ 
+ [[package]]
+ name = "block-buffer"
+ version = "0.7.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b"
+ dependencies = [
+- "block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "block-padding",
++ "byte-tools",
++ "byteorder",
++ "generic-array",
+ ]
+ 
+ [[package]]
+ name = "block-cipher-trait"
+ version = "0.6.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1c924d49bd09e7c06003acda26cd9742e796e34282ec6c1189404dee0c1f4774"
+ dependencies = [
+- "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "generic-array",
+ ]
+ 
+ [[package]]
+ name = "block-modes"
+ version = "0.3.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "31aa8410095e39fdb732909fb5730a48d5bd7c2e3cd76bd1b07b3dbea130c529"
+ dependencies = [
+- "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "block-cipher-trait",
++ "block-padding",
+ ]
+ 
+ [[package]]
+ name = "block-padding"
+ version = "0.1.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5"
+ dependencies = [
+- "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byte-tools",
+ ]
+ 
+ [[package]]
+ name = "byte-tools"
+ version = "0.3.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7"
+ 
+ [[package]]
+ name = "byteorder"
+ version = "1.3.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de"
+ 
+ [[package]]
+ name = "bytes"
+ version = "0.4.12"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c"
+ dependencies = [
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byteorder",
++ "iovec",
+ ]
+ 
+ [[package]]
+ name = "cc"
+ version = "1.0.58"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f9a06fb2e53271d7c279ec1efea6ab691c35a2ae67ec0d91d7acec0caf13b518"
+ 
+ [[package]]
+ name = "cexpr"
+ version = "0.4.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27"
+ dependencies = [
+- "nom 5.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "nom",
+ ]
+ 
+ [[package]]
+ name = "cfg-if"
+ version = "0.1.10"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
+ 
+ [[package]]
+ name = "chrono"
+ version = "0.4.13"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c74d84029116787153e02106bf53e66828452a4b325cc8652b788b5967c0a0b6"
+ dependencies = [
+- "num-integer 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-integer",
++ "num-traits",
++ "time",
+ ]
+ 
+ [[package]]
+ name = "clang-sys"
+ version = "0.29.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fe6837df1d5cba2397b835c8530f51723267e16abbf83892e9e5af4f0e5dd10a"
+ dependencies = [
+- "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "glob",
++ "libc",
++ "libloading 0.5.2",
+ ]
+ 
+ [[package]]
+ name = "cloudabi"
+ version = "0.0.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
+ dependencies = [
+- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1",
+ ]
+ 
+ [[package]]
+ name = "core-foundation-sys"
+ version = "0.5.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "716c271e8613ace48344f723b60b900a93150271e5be206212d052bbc0883efa"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
+ ]
+ 
+ [[package]]
+ name = "coreaudio-rs"
+ version = "0.9.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f229761965dad3e9b11081668a6ea00f1def7aa46062321b5ec245b834f6e491"
+ dependencies = [
+- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "coreaudio-sys 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1",
++ "coreaudio-sys",
+ ]
+ 
+ [[package]]
+ name = "coreaudio-sys"
+ version = "0.2.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d6570ee6e089131e928d5ec9236db9e818aa3cf850f48b0eec6ef700571271d4"
+ dependencies = [
+- "bindgen 0.53.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bindgen",
+ ]
+ 
+ [[package]]
+ name = "cpal"
+ version = "0.8.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d58ae1ed6536b1b233f5e3aeb6997a046ddb4d05e3f61701b58a92eb254a829e"
+ dependencies = [
+- "alsa-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "coreaudio-rs 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "stdweb 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "alsa-sys",
++ "core-foundation-sys",
++ "coreaudio-rs",
++ "lazy_static",
++ "libc",
++ "stdweb",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "crossbeam-deque"
+ version = "0.7.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285"
+ dependencies = [
+- "crossbeam-epoch 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-epoch",
++ "crossbeam-utils 0.7.2",
++ "maybe-uninit",
+ ]
+ 
+ [[package]]
+ name = "crossbeam-epoch"
+ version = "0.8.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace"
+ dependencies = [
+- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "memoffset 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 1.0.0",
++ "cfg-if",
++ "crossbeam-utils 0.7.2",
++ "lazy_static",
++ "maybe-uninit",
++ "memoffset",
++ "scopeguard",
+ ]
+ 
+ [[package]]
+ name = "crossbeam-queue"
+ version = "0.1.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b"
+ dependencies = [
+- "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-utils 0.6.6",
+ ]
+ 
+ [[package]]
+ name = "crossbeam-queue"
+ version = "0.2.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570"
+ dependencies = [
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
++ "crossbeam-utils 0.7.2",
++ "maybe-uninit",
+ ]
+ 
+ [[package]]
+ name = "crossbeam-utils"
+ version = "0.6.6"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6"
+ dependencies = [
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
++ "lazy_static",
+ ]
+ 
+ [[package]]
+ name = "crossbeam-utils"
+ version = "0.7.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
+ dependencies = [
+- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 1.0.0",
++ "cfg-if",
++ "lazy_static",
+ ]
+ 
+ [[package]]
+ name = "crypto-mac"
+ version = "0.7.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5"
+ dependencies = [
+- "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "generic-array",
++ "subtle",
+ ]
+ 
+ [[package]]
+ name = "ctr"
+ version = "0.3.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "022cd691704491df67d25d006fe8eca083098253c4d43516c2206479c58c6736"
+ dependencies = [
+- "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "block-cipher-trait",
++ "stream-cipher",
+ ]
+ 
+ [[package]]
+ name = "digest"
+ version = "0.8.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5"
+ dependencies = [
+- "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "generic-array",
+ ]
+ 
+ [[package]]
+ name = "dns-sd"
+ version = "0.1.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d748509dea20228f63ba519bf142ce2593396386125b01f5b0d6412dab972087"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
++ "pkg-config",
+ ]
+ 
+ [[package]]
+ name = "env_logger"
+ version = "0.6.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3"
+ dependencies = [
+- "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)",
+- "humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "atty",
++ "humantime",
++ "log 0.4.11",
++ "termcolor",
+ ]
+ 
+ [[package]]
+ name = "error-chain"
+ version = "0.12.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d371106cc88ffdfb1eabd7111e432da544f16f3e2d7bf1dfe8bf575f1df045cd"
+ dependencies = [
+- "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "version_check",
+ ]
+ 
+ [[package]]
+ name = "fake-simd"
+ version = "0.1.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed"
+ 
+ [[package]]
+ name = "fnv"
+ version = "1.0.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+ 
+ [[package]]
+ name = "fuchsia-cprng"
+ version = "0.1.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
+ 
+ [[package]]
+ name = "fuchsia-zircon"
+ version = "0.3.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
+ dependencies = [
+- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1",
++ "fuchsia-zircon-sys",
+ ]
+ 
+ [[package]]
+ name = "fuchsia-zircon-sys"
+ version = "0.3.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
+ 
+ [[package]]
+ name = "futures"
+ version = "0.1.29"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef"
+ 
+ [[package]]
+ name = "futures-channel"
+ version = "0.3.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f366ad74c28cca6ba456d95e6422883cfb4b252a83bed929c83abfdbbf2967d5"
+ dependencies = [
+- "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures-core",
+ ]
+ 
+ [[package]]
+ name = "futures-core"
+ version = "0.3.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "59f5fff90fd5d971f936ad674802482ba441b6f09ba5e15fd8b39145582ca399"
+ 
+ [[package]]
+ name = "futures-cpupool"
+ version = "0.1.8"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4"
+ dependencies = [
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures",
++ "num_cpus",
+ ]
+ 
+ [[package]]
+ name = "futures-executor"
+ version = "0.3.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "10d6bb888be1153d3abeb9006b11b02cf5e9b209fda28693c31ae1e4e012e314"
+ dependencies = [
+- "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-task 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-util 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures-core",
++ "futures-task",
++ "futures-util",
+ ]
+ 
+ [[package]]
+ name = "futures-macro"
+ version = "0.3.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d0b5a30a4328ab5473878237c447333c093297bded83a4983d10f4deea240d39"
+ dependencies = [
+- "proc-macro-hack 0.5.16 (registry+https://github.com/rust-lang/crates.io-index)",
+- "proc-macro2 1.0.19 (registry+https://github.com/rust-lang/crates.io-index)",
+- "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "syn 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro-hack",
++ "proc-macro2 1.0.19",
++ "quote 1.0.7",
++ "syn 1.0.35",
+ ]
+ 
+ [[package]]
+ name = "futures-sink"
+ version = "0.3.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3f2032893cb734c7a05d85ce0cc8b8c4075278e93b24b66f9de99d6eb0fa8acc"
+ 
+ [[package]]
+ name = "futures-task"
+ version = "0.3.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bdb66b5f09e22019b1ab0830f7785bcea8e7a42148683f99214f73f8ec21a626"
+ dependencies = [
+- "once_cell 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "once_cell",
+ ]
+ 
+ [[package]]
+ name = "futures-util"
+ version = "0.3.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8764574ff08b701a084482c3c7031349104b07ac897393010494beaa18ce32c6"
+ dependencies = [
+- "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-macro 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-task 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pin-project 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pin-utils 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "proc-macro-hack 0.5.16 (registry+https://github.com/rust-lang/crates.io-index)",
+- "proc-macro-nested 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
+- "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures-core",
++ "futures-macro",
++ "futures-task",
++ "pin-project",
++ "pin-utils",
++ "proc-macro-hack",
++ "proc-macro-nested",
++ "slab 0.4.2",
+ ]
+ 
+ [[package]]
+ name = "gcc"
+ version = "0.3.55"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2"
+ 
+ [[package]]
+ name = "generic-array"
+ version = "0.12.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec"
+ dependencies = [
+- "typenum 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "typenum",
+ ]
+ 
+ [[package]]
+ name = "getopts"
+ version = "0.2.21"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5"
+ dependencies = [
+- "unicode-width 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-width",
+ ]
+ 
+ [[package]]
+ name = "getrandom"
+ version = "0.1.14"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb"
+ dependencies = [
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
++ "libc",
++ "wasi",
+ ]
+ 
+ [[package]]
+ name = "glib"
+ version = "0.9.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "40fb573a09841b6386ddf15fd4bc6655b4f5b106ca962f57ecaecde32a0061c0"
+ dependencies = [
+- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-channel 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-executor 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-task 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-util 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1",
++ "futures-channel",
++ "futures-core",
++ "futures-executor",
++ "futures-task",
++ "futures-util",
++ "glib-sys",
++ "gobject-sys",
++ "lazy_static",
++ "libc",
+ ]
+ 
+ [[package]]
+ name = "glib-sys"
+ version = "0.9.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "95856f3802f446c05feffa5e24859fe6a183a7cb849c8449afc35c86b1e316e2"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
++ "pkg-config",
+ ]
+ 
+ [[package]]
+ name = "glob"
+ version = "0.3.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
+ 
+ [[package]]
+ name = "gobject-sys"
+ version = "0.9.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "31d1a804f62034eccf370006ccaef3708a71c31d561fee88564abe71177553d9"
+ dependencies = [
+- "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "glib-sys",
++ "libc",
++ "pkg-config",
+ ]
+ 
+ [[package]]
+ name = "gstreamer"
+ version = "0.15.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ce8664a114cd6ec16bece783d5eee59496919915b1f6884400ba4a953274a163"
+ dependencies = [
+- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-channel 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-util 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "glib 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "muldiv 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-rational 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "paste 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1",
++ "cfg-if",
++ "futures-channel",
++ "futures-core",
++ "futures-util",
++ "glib",
++ "glib-sys",
++ "gobject-sys",
++ "gstreamer-sys",
++ "lazy_static",
++ "libc",
++ "muldiv",
++ "num-rational",
++ "paste",
+ ]
+ 
+ [[package]]
+ name = "gstreamer-app"
+ version = "0.15.6"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "789784e8d42f5add1e1e965cf9f7e2d09e21dd0756bae6148f971db9a761d6a9"
+ dependencies = [
+- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-sink 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "glib 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer 0.15.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer-app-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer-base 0.15.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1",
++ "futures-core",
++ "futures-sink",
++ "glib",
++ "glib-sys",
++ "gobject-sys",
++ "gstreamer",
++ "gstreamer-app-sys",
++ "gstreamer-base",
++ "gstreamer-sys",
++ "lazy_static",
++ "libc",
+ ]
+ 
+ [[package]]
+ name = "gstreamer-app-sys"
+ version = "0.8.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bf869ce152c23bca5d761ab62146b47f750d0b28d4d499731857532897d48167"
+ dependencies = [
+- "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer-base-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "glib-sys",
++ "gstreamer-base-sys",
++ "gstreamer-sys",
++ "libc",
++ "pkg-config",
+ ]
+ 
+ [[package]]
+ name = "gstreamer-base"
+ version = "0.15.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "42552f75cc6c260b0be180d5c955f4cd74bd170289c622404c25f1210b521c12"
+ dependencies = [
+- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "glib 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer 0.15.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer-base-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1",
++ "glib",
++ "glib-sys",
++ "gobject-sys",
++ "gstreamer",
++ "gstreamer-base-sys",
++ "gstreamer-sys",
++ "libc",
+ ]
+ 
+ [[package]]
+ name = "gstreamer-base-sys"
+ version = "0.8.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ba384f52174b3c586593fca32642680a9e67961fea9f4cd8419f678965023bed"
+ dependencies = [
+- "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "glib-sys",
++ "gobject-sys",
++ "gstreamer-sys",
++ "libc",
++ "pkg-config",
+ ]
+ 
+ [[package]]
+ name = "gstreamer-sys"
+ version = "0.8.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1d18da01b97d0ab5896acd5151e4c155acefd0e6c03c3dd24dd133ba054053db"
+ dependencies = [
+- "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "glib-sys",
++ "gobject-sys",
++ "libc",
++ "pkg-config",
+ ]
+ 
+ [[package]]
+ name = "hermit-abi"
+ version = "0.1.15"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3deed196b6e7f9e44a2ae8d94225d80302d81208b1bb673fd21fe634645c85a9"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
+ ]
+ 
+ [[package]]
+ name = "hex"
+ version = "0.3.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77"
+ 
+ [[package]]
+ name = "hmac"
+ version = "0.7.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695"
+ dependencies = [
+- "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crypto-mac",
++ "digest",
+ ]
+ 
+ [[package]]
+ name = "hostname"
+ version = "0.3.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "match_cfg 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
++ "match_cfg",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "httparse"
+ version = "1.3.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9"
+ 
+ [[package]]
+ name = "humantime"
+ version = "1.3.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
+ dependencies = [
+- "quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quick-error",
+ ]
+ 
+ [[package]]
+ name = "hyper"
+ version = "0.11.27"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "34a590ca09d341e94cddf8e5af0bbccde205d5fbc2fa3c09dd67c7f85cea59d7"
+ dependencies = [
+- "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
+- "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)",
+- "net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)",
+- "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "relay 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-proto 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "want 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "base64 0.9.3",
++ "bytes",
++ "futures",
++ "futures-cpupool",
++ "httparse",
++ "iovec",
++ "language-tags",
++ "log 0.4.11",
++ "mime",
++ "net2",
++ "percent-encoding",
++ "relay",
++ "time",
++ "tokio-core",
++ "tokio-io",
++ "tokio-proto",
++ "tokio-service",
++ "unicase",
++ "want",
+ ]
+ 
+ [[package]]
+ name = "hyper-proxy"
+ version = "0.4.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "44f0925de2747e481e6e477dd212c25e8f745567f02f6182e04d27b97c3fbece"
+ dependencies = [
+- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bytes",
++ "futures",
++ "hyper",
++ "tokio-core",
++ "tokio-io",
+ ]
+ 
+ [[package]]
+ name = "idna"
+ version = "0.1.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e"
+ dependencies = [
+- "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
+- "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "unicode-normalization 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "matches",
++ "unicode-bidi",
++ "unicode-normalization",
+ ]
+ 
+ [[package]]
+ name = "if-addrs"
+ version = "0.6.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "28538916eb3f3976311f5dfbe67b5362d0add1293d0a9cad17debf86f8e3aa48"
+ dependencies = [
+- "if-addrs-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "if-addrs-sys",
++ "libc",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "if-addrs-sys"
+ version = "0.3.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "de74b9dd780476e837e5eb5ab7c88b49ed304126e412030a0adba99c8efe79ea"
+ dependencies = [
+- "cc 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cc",
++ "libc",
+ ]
+ 
+ [[package]]
+ name = "iovec"
+ version = "0.1.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
+ ]
+ 
+ [[package]]
+ name = "itoa"
+ version = "0.4.6"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6"
+ 
+ [[package]]
+ name = "jack"
+ version = "0.5.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1e15fc592e2e5a74a105ff507083c04db1aa20ba1b90d425362ba000e57422df"
+ dependencies = [
+- "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "jack-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 0.7.0",
++ "jack-sys",
++ "lazy_static",
++ "libc",
+ ]
+ 
+ [[package]]
+ name = "jack-sys"
+ version = "0.2.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c0d4ca501477fd3cd93a36df581046e5d6338ed826cf7e9b8d302603521e6cc3"
+ dependencies = [
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libloading 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static",
++ "libc",
++ "libloading 0.4.3",
+ ]
+ 
+ [[package]]
+ name = "kernel32-sys"
+ version = "0.2.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
+ dependencies = [
+- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.2.8",
++ "winapi-build",
+ ]
+ 
+ [[package]]
+ name = "language-tags"
+ version = "0.2.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a"
+ 
+ [[package]]
+ name = "lazy_static"
+ version = "1.4.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+ 
+ [[package]]
+ name = "lazycell"
+ version = "1.2.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f"
+ 
+ [[package]]
+ name = "lewton"
+ version = "0.9.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8d542c1a317036c45c2aa1cf10cc9d403ca91eb2d333ef1a4917e5cb10628bd0"
+ dependencies = [
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "ogg 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byteorder",
++ "ogg",
++ "smallvec 0.6.13",
+ ]
+ 
+ [[package]]
+ name = "libc"
+ version = "0.2.73"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bd7d4bd64732af4bf3a67f367c27df8520ad7e230c5817b8ff485864d80242b9"
+ 
+ [[package]]
+ name = "libloading"
+ version = "0.4.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fd38073de8f7965d0c17d30546d4bb6da311ab428d1c7a3fc71dff7f9d4979b9"
+ dependencies = [
+- "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "kernel32-sys",
++ "lazy_static",
++ "winapi 0.2.8",
+ ]
+ 
+ [[package]]
+ name = "libloading"
+ version = "0.5.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753"
+ dependencies = [
+- "cc 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cc",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "libm"
+ version = "0.2.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a"
+ 
+ [[package]]
+ name = "libmdns"
+ version = "0.2.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5d8582c174736c53633bc482ac709b24527c018356c3dc6d8e25a788b06b394e"
+ dependencies = [
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "hostname 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "if-addrs 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "multimap 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)",
+- "quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byteorder",
++ "futures",
++ "hostname",
++ "if-addrs",
++ "log 0.4.11",
++ "multimap",
++ "net2",
++ "quick-error",
++ "rand 0.7.3",
++ "tokio-core",
+ ]
+ 
+ [[package]]
+ name = "libpulse-sys"
+ version = "0.0.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9bb11b06faf883500c1b625cf4453e6c7737e9df9c7ba01df3f84b22b083e4ac"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
+ ]
  
  [[package]]
  name = "librespot"
--version = "0.1.2"
-+version = "0.1.3"
- dependencies = [
-  "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
-  "env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -940,12 +940,12 @@ dependencies = [
-  "getopts 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
-  "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
-  "hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)",
-- "librespot-audio 0.1.2",
-- "librespot-connect 0.1.2",
-- "librespot-core 0.1.2",
-- "librespot-metadata 0.1.2",
-- "librespot-playback 0.1.2",
-- "librespot-protocol 0.1.2",
-+ "librespot-audio 0.1.3",
-+ "librespot-connect 0.1.3",
-+ "librespot-core 0.1.3",
-+ "librespot-metadata 0.1.3",
-+ "librespot-playback 0.1.3",
-+ "librespot-protocol 0.1.3",
-  "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
-  "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
-  "protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -961,7 +961,7 @@ dependencies = [
+-version = "0.1.5"
++version = "0.1.6"
+ dependencies = [
+- "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "getopts 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
+- "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)",
+- "librespot-audio 0.1.5",
+- "librespot-connect 0.1.5",
+- "librespot-core 0.1.5",
+- "librespot-metadata 0.1.5",
+- "librespot-playback 0.1.5",
+- "librespot-protocol 0.1.5",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
+- "protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rpassword 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "sha-1 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-process 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-signal 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
+- "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "base64 0.10.1",
++ "env_logger",
++ "futures",
++ "getopts",
++ "hex",
++ "hyper",
++ "librespot-audio",
++ "librespot-connect",
++ "librespot-core",
++ "librespot-metadata",
++ "librespot-playback",
++ "librespot-protocol",
++ "log 0.4.11",
++ "num-bigint",
++ "protobuf",
++ "rand 0.7.3",
++ "rpassword",
++ "sha-1",
++ "tokio-core",
++ "tokio-io",
++ "tokio-process",
++ "tokio-signal",
++ "url",
+ ]
  
  [[package]]
  name = "librespot-audio"
--version = "0.1.2"
-+version = "0.1.3"
- dependencies = [
-  "aes-ctr 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "bit-set 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -969,7 +969,7 @@ dependencies = [
-  "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
-  "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
-  "lewton 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)",
-- "librespot-core 0.1.2",
-+ "librespot-core 0.1.3",
-  "librespot-tremor 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
-  "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -980,7 +980,7 @@ dependencies = [
+-version = "0.1.5"
++version = "0.1.6"
+ dependencies = [
+- "aes-ctr 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "bit-set 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lewton 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "librespot-core 0.1.5",
+- "librespot-tremor 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "vorbis 0.0.14 (registry+https://github.com/rust-lang/crates.io-index)",
++ "aes-ctr",
++ "bit-set",
++ "byteorder",
++ "bytes",
++ "futures",
++ "lewton",
++ "librespot-core",
++ "librespot-tremor",
++ "log 0.4.11",
++ "num-bigint",
++ "num-traits",
++ "tempfile",
++ "vorbis",
+ ]
  
  [[package]]
  name = "librespot-connect"
--version = "0.1.2"
-+version = "0.1.3"
- dependencies = [
-  "aes-ctr 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -990,9 +990,9 @@ dependencies = [
-  "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
-  "hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)",
-  "libmdns 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
-- "librespot-core 0.1.2",
-- "librespot-playback 0.1.2",
-- "librespot-protocol 0.1.2",
-+ "librespot-core 0.1.3",
-+ "librespot-playback 0.1.3",
-+ "librespot-protocol 0.1.3",
-  "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
-  "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
-  "protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -1007,7 +1007,7 @@ dependencies = [
+-version = "0.1.5"
++version = "0.1.6"
+ dependencies = [
+- "aes-ctr 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "block-modes 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "dns-sd 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libmdns 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "librespot-core 0.1.5",
+- "librespot-playback 0.1.5",
+- "librespot-protocol 0.1.5",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
+- "protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)",
+- "serde_derive 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)",
+- "serde_json 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)",
+- "sha-1 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
+- "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "aes-ctr",
++ "base64 0.10.1",
++ "block-modes",
++ "dns-sd",
++ "futures",
++ "hmac",
++ "hyper",
++ "libmdns",
++ "librespot-core",
++ "librespot-playback",
++ "librespot-protocol",
++ "log 0.4.11",
++ "num-bigint",
++ "protobuf",
++ "rand 0.7.3",
++ "serde",
++ "serde_derive",
++ "serde_json",
++ "sha-1",
++ "tokio-core",
++ "url",
+ ]
  
  [[package]]
  name = "librespot-core"
--version = "0.1.2"
-+version = "0.1.3"
- dependencies = [
-  "aes 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
-  "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -1020,7 +1020,7 @@ dependencies = [
-  "hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)",
-  "hyper-proxy 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
-  "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-- "librespot-protocol 0.1.2",
-+ "librespot-protocol 0.1.3",
-  "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
-  "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
-  "num-integer 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -1043,12 +1043,12 @@ dependencies = [
+-version = "0.1.5"
++version = "0.1.6"
+ dependencies = [
+- "aes 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "error-chain 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)",
+- "hyper-proxy 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "librespot-protocol 0.1.5",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-integer 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)",
+- "serde_derive 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)",
+- "serde_json 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)",
+- "sha-1 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "shannon 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "vergen 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "aes",
++ "base64 0.10.1",
++ "byteorder",
++ "bytes",
++ "error-chain",
++ "futures",
++ "hmac",
++ "httparse",
++ "hyper",
++ "hyper-proxy",
++ "lazy_static",
++ "librespot-protocol",
++ "log 0.4.11",
++ "num-bigint",
++ "num-integer",
++ "num-traits",
++ "pbkdf2",
++ "protobuf",
++ "rand 0.7.3",
++ "serde",
++ "serde_derive",
++ "serde_json",
++ "sha-1",
++ "shannon",
++ "tokio-codec",
++ "tokio-core",
++ "tokio-io",
++ "url",
++ "uuid",
++ "vergen",
+ ]
  
  [[package]]
  name = "librespot-metadata"
--version = "0.1.2"
-+version = "0.1.3"
+-version = "0.1.5"
++version = "0.1.6"
  dependencies = [
-  "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
-  "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
-- "librespot-core 0.1.2",
-- "librespot-protocol 0.1.2",
-+ "librespot-core 0.1.3",
-+ "librespot-protocol 0.1.3",
-  "linear-map 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
-  "protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -1056,7 +1056,7 @@ dependencies = [
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "librespot-core 0.1.5",
+- "librespot-protocol 0.1.5",
+- "linear-map 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byteorder",
++ "futures",
++ "librespot-core",
++ "librespot-protocol",
++ "linear-map",
++ "log 0.4.11",
++ "protobuf",
+ ]
  
  [[package]]
  name = "librespot-playback"
--version = "0.1.2"
-+version = "0.1.3"
- dependencies = [
-  "alsa 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
-  "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -1068,9 +1068,9 @@ dependencies = [
-  "jack 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)",
-  "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
-  "libpulse-sys 0.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
-- "librespot-audio 0.1.2",
-- "librespot-core 0.1.2",
-- "librespot-metadata 0.1.2",
-+ "librespot-audio 0.1.3",
-+ "librespot-core 0.1.3",
-+ "librespot-metadata 0.1.3",
-  "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
-  "portaudio-rs 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
-  "rodio 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
-@@ -1081,7 +1081,7 @@ dependencies = [
+-version = "0.1.5"
++version = "0.1.6"
+ dependencies = [
+- "alsa 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "cpal 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "glib 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer 0.15.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "gstreamer-app 0.15.6 (registry+https://github.com/rust-lang/crates.io-index)",
+- "jack 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libpulse-sys 0.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "librespot-audio 0.1.5",
+- "librespot-core 0.1.5",
+- "librespot-metadata 0.1.5",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "portaudio-rs 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rodio 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "sdl2 0.32.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "shell-words 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "zerocopy 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "alsa",
++ "byteorder",
++ "cpal",
++ "futures",
++ "glib",
++ "gstreamer",
++ "gstreamer-app",
++ "jack",
++ "libc",
++ "libpulse-sys",
++ "librespot-audio",
++ "librespot-core",
++ "librespot-metadata",
++ "log 0.4.11",
++ "portaudio-rs",
++ "rodio",
++ "sdl2",
++ "shell-words",
++ "zerocopy",
+ ]
  
  [[package]]
  name = "librespot-protocol"
--version = "0.1.2"
-+version = "0.1.3"
+-version = "0.1.5"
++version = "0.1.6"
+ dependencies = [
+- "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "protobuf-codegen 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "protobuf-codegen-pure 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "glob",
++ "protobuf",
++ "protobuf-codegen",
++ "protobuf-codegen-pure",
+ ]
+ 
+ [[package]]
+ name = "librespot-tremor"
+ version = "0.2.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "97f525bff915d478a76940a7b988e5ea34911ba7280c97bd3a7673f54d68b4fe"
+ dependencies = [
+- "cc 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "ogg-sys 0.0.9 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cc",
++ "libc",
++ "ogg-sys",
++ "pkg-config",
+ ]
+ 
+ [[package]]
+ name = "linear-map"
+ version = "1.2.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bfae20f6b19ad527b550c223fddc3077a547fc70cda94b9b566575423fd303ee"
+ 
+ [[package]]
+ name = "lock_api"
+ version = "0.3.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75"
+ dependencies = [
+- "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "scopeguard",
+ ]
+ 
+ [[package]]
+ name = "log"
+ version = "0.3.9"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b"
+ dependencies = [
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.11",
+ ]
+ 
+ [[package]]
+ name = "log"
+ version = "0.4.11"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b"
+ dependencies = [
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
+ ]
+ 
+ [[package]]
+ name = "match_cfg"
+ version = "0.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4"
+ 
+ [[package]]
+ name = "matches"
+ version = "0.1.8"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
+ 
+ [[package]]
+ name = "matrixmultiply"
+ version = "0.2.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d4f7ec66360130972f34830bfad9ef05c6610a43938a467bcc9ab9369ab3478f"
+ dependencies = [
+- "rawpointer 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rawpointer",
+ ]
+ 
+ [[package]]
+ name = "maybe-uninit"
+ version = "2.0.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
+ 
+ [[package]]
+ name = "memchr"
+ version = "2.3.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400"
+ 
+ [[package]]
+ name = "memoffset"
+ version = "0.5.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c198b026e1bbf08a937e94c6c60f9ec4a2267f5b0d2eec9c1b21b061ce2be55f"
+ dependencies = [
+- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 1.0.0",
+ ]
+ 
+ [[package]]
+ name = "mime"
+ version = "0.3.16"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
+ 
+ [[package]]
+ name = "mio"
+ version = "0.6.22"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430"
+ dependencies = [
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)",
+- "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
++ "fuchsia-zircon",
++ "fuchsia-zircon-sys",
++ "iovec",
++ "kernel32-sys",
++ "libc",
++ "log 0.4.11",
++ "miow 0.2.1",
++ "net2",
++ "slab 0.4.2",
++ "winapi 0.2.8",
+ ]
+ 
+ [[package]]
+ name = "mio-named-pipes"
+ version = "0.1.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0840c1c50fd55e521b247f949c241c9997709f23bd7f023b9762cd561e935656"
+ dependencies = [
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "miow 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.11",
++ "mio",
++ "miow 0.3.5",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "mio-uds"
+ version = "0.6.8"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0"
+ dependencies = [
+- "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)",
++ "iovec",
++ "libc",
++ "mio",
+ ]
+ 
+ [[package]]
+ name = "miow"
+ version = "0.2.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
+ dependencies = [
+- "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+- "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "kernel32-sys",
++ "net2",
++ "winapi 0.2.8",
++ "ws2_32-sys",
+ ]
+ 
+ [[package]]
+ name = "miow"
+ version = "0.3.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "07b88fb9795d4d36d62a012dfbf49a8f5cf12751f36d31a9dbe66d528e58979e"
+ dependencies = [
+- "socket2 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "socket2",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "muldiv"
+ version = "0.2.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0419348c027fa7be448d2ae7ea0e4e04c2334c31dc4e74ab29f00a2a7ca69204"
+ 
+ [[package]]
+ name = "multimap"
+ version = "0.8.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d8883adfde9756c1d30b0f519c9b8c502a94b41ac62f696453c37c7fc0a958ce"
+ dependencies = [
+- "serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde",
+ ]
+ 
+ [[package]]
+ name = "nalgebra"
+ version = "0.18.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "aaa9fddbc34c8c35dd2108515587b8ce0cab396f17977b8c738568e4edb521a2"
+ dependencies = [
+- "alga 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "approx 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "matrixmultiply 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-complex 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-rational 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "typenum 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "alga",
++ "approx",
++ "generic-array",
++ "matrixmultiply",
++ "num-complex",
++ "num-rational",
++ "num-traits",
++ "rand 0.6.5",
++ "typenum",
+ ]
+ 
+ [[package]]
+ name = "net2"
+ version = "0.2.34"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2ba7c918ac76704fb42afcbbb43891e72731f3dcca3bef2a19786297baf14af7"
+ dependencies = [
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
++ "libc",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "nix"
+ version = "0.9.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a2c5afeb0198ec7be8569d666644b574345aad2e95a53baf3a532da3e0f3fb32"
+ dependencies = [
+- "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 0.9.1",
++ "cfg-if",
++ "libc",
++ "void",
+ ]
+ 
+ [[package]]
+ name = "nom"
+ version = "5.1.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af"
+ dependencies = [
+- "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "memchr",
++ "version_check",
+ ]
+ 
+ [[package]]
+ name = "num"
+ version = "0.1.42"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4703ad64153382334aa8db57c637364c322d3372e097840c72000dabdcf6156e"
+ dependencies = [
+- "num-integer 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-iter 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-integer",
++ "num-iter",
++ "num-traits",
+ ]
+ 
+ [[package]]
+ name = "num-bigint"
+ version = "0.2.6"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304"
+ dependencies = [
+- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-integer 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 1.0.0",
++ "num-integer",
++ "num-traits",
+ ]
+ 
+ [[package]]
+ name = "num-complex"
+ version = "0.2.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95"
+ dependencies = [
+- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 1.0.0",
++ "num-traits",
+ ]
+ 
+ [[package]]
+ name = "num-integer"
+ version = "0.1.43"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b"
+ dependencies = [
+- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 1.0.0",
++ "num-traits",
+ ]
+ 
+ [[package]]
+ name = "num-iter"
+ version = "0.1.41"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7a6e6b7c748f995c4c29c5f5ae0248536e04a5739927c74ec0fa564805094b9f"
+ dependencies = [
+- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-integer 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 1.0.0",
++ "num-integer",
++ "num-traits",
+ ]
+ 
+ [[package]]
+ name = "num-rational"
+ version = "0.2.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef"
+ dependencies = [
+- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-integer 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 1.0.0",
++ "num-integer",
++ "num-traits",
+ ]
+ 
+ [[package]]
+ name = "num-traits"
+ version = "0.2.12"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611"
+ dependencies = [
+- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libm 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 1.0.0",
++ "libm",
+ ]
+ 
+ [[package]]
+ name = "num_cpus"
+ version = "1.13.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"
+ dependencies = [
+- "hermit-abi 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "hermit-abi",
++ "libc",
+ ]
+ 
+ [[package]]
+ name = "ogg"
+ version = "0.7.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d79f1db9148be9d0e174bb3ac890f6030fcb1ed947267c5a91ee4c91b5a91e15"
+ dependencies = [
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byteorder",
+ ]
+ 
+ [[package]]
+ name = "ogg-sys"
+ version = "0.0.9"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a95b8c172e17df1a41bf8d666301d3b2c4efeb90d9d0415e2a4dc0668b35fdb2"
+ dependencies = [
+- "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "gcc",
++ "libc",
++ "pkg-config",
+ ]
+ 
+ [[package]]
+ name = "once_cell"
+ version = "1.4.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0b631f7e854af39a1739f401cf34a8a013dfe09eac4fa4dba91e9768bd28168d"
+ 
+ [[package]]
+ name = "opaque-debug"
+ version = "0.2.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c"
+ 
+ [[package]]
+ name = "parking_lot"
+ version = "0.9.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252"
+ dependencies = [
+- "lock_api 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lock_api",
++ "parking_lot_core",
++ "rustc_version",
+ ]
+ 
+ [[package]]
+ name = "parking_lot_core"
+ version = "0.6.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b"
+ dependencies = [
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
++ "cloudabi",
++ "libc",
++ "redox_syscall",
++ "rustc_version",
++ "smallvec 0.6.13",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "paste"
+ version = "0.1.18"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880"
+ dependencies = [
+- "paste-impl 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
+- "proc-macro-hack 0.5.16 (registry+https://github.com/rust-lang/crates.io-index)",
++ "paste-impl",
++ "proc-macro-hack",
+ ]
+ 
+ [[package]]
+ name = "paste-impl"
+ version = "0.1.18"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6"
+ dependencies = [
+- "proc-macro-hack 0.5.16 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro-hack",
+ ]
+ 
+ [[package]]
+ name = "pbkdf2"
+ version = "0.3.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9"
+ dependencies = [
+- "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
+- "sha2 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "base64 0.9.3",
++ "byteorder",
++ "crypto-mac",
++ "hmac",
++ "rand 0.5.6",
++ "sha2",
++ "subtle",
+ ]
+ 
+ [[package]]
+ name = "peeking_take_while"
+ version = "0.1.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
+ 
+ [[package]]
+ name = "percent-encoding"
+ version = "1.0.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831"
+ 
+ [[package]]
+ name = "pin-project"
+ version = "0.4.22"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "12e3a6cdbfe94a5e4572812a0201f8c0ed98c1c452c7b8563ce2276988ef9c17"
+ dependencies = [
+- "pin-project-internal 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)",
++ "pin-project-internal",
+ ]
+ 
+ [[package]]
+ name = "pin-project-internal"
+ version = "0.4.22"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6a0ffd45cf79d88737d7cc85bfd5d2894bee1139b356e616fe85dc389c61aaf7"
+ dependencies = [
+- "proc-macro2 1.0.19 (registry+https://github.com/rust-lang/crates.io-index)",
+- "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "syn 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2 1.0.19",
++ "quote 1.0.7",
++ "syn 1.0.35",
+ ]
+ 
+ [[package]]
+ name = "pin-utils"
+ version = "0.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+ 
+ [[package]]
+ name = "pkg-config"
+ version = "0.3.18"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d36492546b6af1463394d46f0c834346f31548646f6ba10849802c9c9a27ac33"
+ 
+ [[package]]
+ name = "portaudio-rs"
+ version = "0.3.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cdb6b5eff96ccc9bf44d34c379ab03ae944426d83d1694345bdf8159d561d562"
+ dependencies = [
+- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "portaudio-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1",
++ "libc",
++ "portaudio-sys",
+ ]
+ 
+ [[package]]
+ name = "portaudio-sys"
+ version = "0.1.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5194a4fa953b4ffd851c320ef6f0484cd7278cb7169ea9d6c433e49b23f7b7f5"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
++ "pkg-config",
+ ]
+ 
+ [[package]]
+ name = "ppv-lite86"
+ version = "0.2.8"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612ea"
+ 
+ [[package]]
+ name = "proc-macro-hack"
+ version = "0.5.16"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7e0456befd48169b9f13ef0f0ad46d492cf9d2dbb918bcf38e01eed4ce3ec5e4"
+ 
+ [[package]]
+ name = "proc-macro-nested"
+ version = "0.1.6"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a"
+ 
+ [[package]]
+ name = "proc-macro2"
+ version = "0.4.30"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
+ dependencies = [
+- "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-xid 0.1.0",
+ ]
+ 
+ [[package]]
+ name = "proc-macro2"
+ version = "1.0.19"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "04f5f085b5d71e2188cb8271e5da0161ad52c3f227a661a3c135fdf28e258b12"
+ dependencies = [
+- "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-xid 0.2.1",
+ ]
+ 
+ [[package]]
+ name = "protobuf"
+ version = "2.14.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8e86d370532557ae7573551a1ec8235a0f8d6cb276c7c9e6aa490b511c447485"
+ 
+ [[package]]
+ name = "protobuf-codegen"
+ version = "2.14.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "de113bba758ccf2c1ef816b127c958001b7831136c9bc3f8e9ec695ac4e82b0c"
+ dependencies = [
+- "protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "protobuf",
+ ]
+ 
+ [[package]]
+ name = "protobuf-codegen-pure"
+ version = "2.14.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2d1a4febc73bf0cada1d77c459a0c8e5973179f1cfd5b0f1ab789d45b17b6440"
+ dependencies = [
+- "protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "protobuf-codegen 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "protobuf",
++ "protobuf-codegen",
+ ]
+ 
+ [[package]]
+ name = "quick-error"
+ version = "1.2.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
+ 
+ [[package]]
+ name = "quote"
+ version = "0.6.13"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1"
+ dependencies = [
+- "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2 0.4.30",
+ ]
+ 
+ [[package]]
+ name = "quote"
+ version = "1.0.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37"
+ dependencies = [
+- "proc-macro2 1.0.19 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2 1.0.19",
+ ]
+ 
+ [[package]]
+ name = "rand"
+ version = "0.3.23"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
++ "rand 0.4.6",
+ ]
+ 
+ [[package]]
+ name = "rand"
+ version = "0.4.6"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293"
+ dependencies = [
+- "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "fuchsia-cprng",
++ "libc",
++ "rand_core 0.3.1",
++ "rdrand",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "rand"
+ version = "0.5.6"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9"
+ dependencies = [
+- "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cloudabi",
++ "fuchsia-cprng",
++ "libc",
++ "rand_core 0.3.1",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "rand"
+ version = "0.6.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
+ dependencies = [
+- "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 0.1.7",
++ "libc",
++ "rand_chacha 0.1.1",
++ "rand_core 0.4.2",
++ "rand_hc 0.1.0",
++ "rand_isaac",
++ "rand_jitter",
++ "rand_os",
++ "rand_pcg",
++ "rand_xorshift",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "rand"
+ version = "0.7.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
+ dependencies = [
+- "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "getrandom",
++ "libc",
++ "rand_chacha 0.2.2",
++ "rand_core 0.5.1",
++ "rand_hc 0.2.0",
+ ]
+ 
+ [[package]]
+ name = "rand_chacha"
+ version = "0.1.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
+ dependencies = [
+- "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 0.1.7",
++ "rand_core 0.3.1",
+ ]
+ 
+ [[package]]
+ name = "rand_chacha"
+ version = "0.2.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
+ dependencies = [
+- "ppv-lite86 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "ppv-lite86",
++ "rand_core 0.5.1",
+ ]
+ 
+ [[package]]
+ name = "rand_core"
+ version = "0.3.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
+ dependencies = [
+- "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.4.2",
+ ]
+ 
+ [[package]]
+ name = "rand_core"
+ version = "0.4.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"
+ 
+ [[package]]
+ name = "rand_core"
+ version = "0.5.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
+ dependencies = [
+- "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
++ "getrandom",
+ ]
+ 
+ [[package]]
+ name = "rand_hc"
+ version = "0.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4"
+ dependencies = [
+- "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.3.1",
+ ]
+ 
+ [[package]]
+ name = "rand_hc"
+ version = "0.2.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
+ dependencies = [
+- "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.5.1",
+ ]
+ 
+ [[package]]
+ name = "rand_isaac"
+ version = "0.1.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08"
+ dependencies = [
+- "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.3.1",
+ ]
+ 
+ [[package]]
+ name = "rand_jitter"
+ version = "0.1.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
++ "rand_core 0.4.2",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "rand_os"
+ version = "0.1.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071"
+ dependencies = [
+- "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cloudabi",
++ "fuchsia-cprng",
++ "libc",
++ "rand_core 0.4.2",
++ "rdrand",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "rand_pcg"
+ version = "0.1.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44"
+ dependencies = [
+- "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "autocfg 0.1.7",
++ "rand_core 0.4.2",
+ ]
+ 
+ [[package]]
+ name = "rand_xorshift"
+ version = "0.1.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c"
+ dependencies = [
+- "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.3.1",
+ ]
+ 
+ [[package]]
+ name = "rawpointer"
+ version = "0.2.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
+ 
+ [[package]]
+ name = "rdrand"
+ version = "0.4.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
+ dependencies = [
+- "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.3.1",
+ ]
+ 
+ [[package]]
+ name = "redox_syscall"
+ version = "0.1.57"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
+ 
+ [[package]]
+ name = "regex"
+ version = "1.3.9"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9c3780fcf44b193bc4d09f36d2a3c87b251da4a046c87795a0d35f4f927ad8e6"
+ dependencies = [
+- "regex-syntax 0.6.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "regex-syntax",
+ ]
+ 
+ [[package]]
+ name = "regex-syntax"
+ version = "0.6.18"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8"
+ 
+ [[package]]
+ name = "relay"
+ version = "0.1.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1576e382688d7e9deecea24417e350d3062d97e32e45d70b1cde65994ff1489a"
+ dependencies = [
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures",
+ ]
+ 
+ [[package]]
+ name = "remove_dir_all"
+ version = "0.5.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
+ dependencies = [
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "rodio"
+ version = "0.9.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5d0f961b254e66d147a7b550c78b01308934c97d807a34b417fd0f5a0a0f3a2d"
+ dependencies = [
+- "cpal 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "nalgebra 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cpal",
++ "lazy_static",
++ "nalgebra",
+ ]
+ 
+ [[package]]
+ name = "rpassword"
+ version = "3.0.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c34fa7bcae7fca3c8471e8417088bbc3ad9af8066b0ecf4f3c0d98a0d772716e"
+ dependencies = [
+- "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "kernel32-sys",
++ "libc",
++ "winapi 0.2.8",
+ ]
+ 
+ [[package]]
+ name = "rustc-hash"
+ version = "1.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+ 
+ [[package]]
+ name = "rustc_version"
+ version = "0.2.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
+ dependencies = [
+- "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "semver",
+ ]
+ 
+ [[package]]
+ name = "ryu"
+ version = "1.0.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
+ 
+ [[package]]
+ name = "safemem"
+ version = "0.3.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072"
+ 
+ [[package]]
+ name = "scoped-tls"
+ version = "0.1.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "332ffa32bf586782a3efaeb58f127980944bbc8c4d6913a86107ac2a5ab24b28"
+ 
+ [[package]]
+ name = "scopeguard"
+ version = "1.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+ 
+ [[package]]
+ name = "sdl2"
+ version = "0.32.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d051a07231e303f5f719da78cb6f7394f6d5b54f733aef5b0b447804a83edd7b"
+ dependencies = [
+- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "sdl2-sys 0.32.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1",
++ "lazy_static",
++ "libc",
++ "num",
++ "rand 0.6.5",
++ "sdl2-sys",
+ ]
+ 
+ [[package]]
+ name = "sdl2-sys"
+ version = "0.32.6"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "34e71125077d297d57e4c1acfe8981b5bdfbf5a20e7b589abfdcb33bf1127f86"
+ dependencies = [
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
++ "libc",
+ ]
+ 
+ [[package]]
+ name = "semver"
+ version = "0.9.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
+ dependencies = [
+- "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "semver-parser",
+ ]
+ 
+ [[package]]
+ name = "semver-parser"
+ version = "0.7.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
+ 
+ [[package]]
+ name = "serde"
+ version = "1.0.114"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5317f7588f0a5078ee60ef675ef96735a1442132dc645eb1d12c018620ed8cd3"
+ 
+ [[package]]
+ name = "serde_derive"
+ version = "1.0.114"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2a0be94b04690fbaed37cddffc5c134bf537c8e3329d53e982fe04c374978f8e"
+ dependencies = [
+- "proc-macro2 1.0.19 (registry+https://github.com/rust-lang/crates.io-index)",
+- "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "syn 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2 1.0.19",
++ "quote 1.0.7",
++ "syn 1.0.35",
+ ]
+ 
+ [[package]]
+ name = "serde_json"
+ version = "1.0.56"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3433e879a558dde8b5e8feb2a04899cf34fdde1fafb894687e52105fc1162ac3"
+ dependencies = [
+- "itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
+- "ryu 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)",
++ "itoa",
++ "ryu",
++ "serde",
+ ]
+ 
+ [[package]]
+ name = "sha-1"
+ version = "0.8.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df"
+ dependencies = [
+- "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "block-buffer",
++ "digest",
++ "fake-simd",
++ "opaque-debug",
+ ]
+ 
+ [[package]]
+ name = "sha2"
+ version = "0.8.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69"
+ dependencies = [
+- "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "block-buffer",
++ "digest",
++ "fake-simd",
++ "opaque-debug",
+ ]
+ 
+ [[package]]
+ name = "shannon"
+ version = "0.2.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7ea5b41c9427b56caa7b808cb548a04fb50bb5b9e98590b53f28064ff4174561"
+ dependencies = [
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byteorder",
+ ]
+ 
+ [[package]]
+ name = "shell-words"
+ version = "0.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "39acde55a154c4cd3ae048ac78cc21c25f3a0145e44111b523279113dce0d94a"
+ 
+ [[package]]
+ name = "shlex"
+ version = "0.1.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2"
+ 
+ [[package]]
+ name = "signal-hook-registry"
+ version = "1.2.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41"
+ dependencies = [
+- "arc-swap 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
++ "arc-swap",
++ "libc",
+ ]
+ 
+ [[package]]
+ name = "slab"
+ version = "0.3.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "17b4fcaed89ab08ef143da37bc52adbcc04d4a69014f4c1208d6b51f0c47bc23"
+ 
+ [[package]]
+ name = "slab"
+ version = "0.4.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
+ 
+ [[package]]
+ name = "smallvec"
+ version = "0.2.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4c8cbcd6df1e117c2210e13ab5109635ad68a929fcbb8964dc965b76cb5ee013"
+ 
+ [[package]]
+ name = "smallvec"
+ version = "0.6.13"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6"
+ dependencies = [
+- "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "maybe-uninit",
+ ]
+ 
+ [[package]]
+ name = "socket2"
+ version = "0.3.12"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "03088793f677dce356f3ccc2edb1b314ad191ab702a5de3faf49304f7e104918"
+ dependencies = [
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
++ "libc",
++ "redox_syscall",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "stdweb"
+ version = "0.1.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ef5430c8e36b713e13b48a9f709cc21e046723fe44ce34587b73a830203b533e"
+ 
+ [[package]]
+ name = "stream-cipher"
+ version = "0.3.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8131256a5896cabcf5eb04f4d6dacbe1aefda854b0d9896e09cb58829ec5638c"
+ dependencies = [
+- "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "generic-array",
+ ]
+ 
+ [[package]]
+ name = "subtle"
+ version = "1.0.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee"
+ 
+ [[package]]
+ name = "syn"
+ version = "0.15.44"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5"
+ dependencies = [
+- "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
+- "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2 0.4.30",
++ "quote 0.6.13",
++ "unicode-xid 0.1.0",
+ ]
+ 
+ [[package]]
+ name = "syn"
+ version = "1.0.35"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fb7f4c519df8c117855e19dd8cc851e89eb746fe7a73f0157e0d95fdec5369b0"
+ dependencies = [
+- "proc-macro2 1.0.19 (registry+https://github.com/rust-lang/crates.io-index)",
+- "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2 1.0.19",
++ "quote 1.0.7",
++ "unicode-xid 0.2.1",
+ ]
+ 
+ [[package]]
+ name = "synstructure"
+ version = "0.10.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f"
+ dependencies = [
+- "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
+- "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)",
+- "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2 0.4.30",
++ "quote 0.6.13",
++ "syn 0.15.44",
++ "unicode-xid 0.1.0",
+ ]
+ 
+ [[package]]
+ name = "take"
+ version = "0.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b157868d8ac1f56b64604539990685fa7611d8fa9e5476cf0c02cf34d32917c5"
+ 
+ [[package]]
+ name = "tempfile"
+ version = "3.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9"
+ dependencies = [
+- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)",
+- "remove_dir_all 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if",
++ "libc",
++ "rand 0.7.3",
++ "redox_syscall",
++ "remove_dir_all",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "termcolor"
+ version = "1.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f"
+ dependencies = [
+- "winapi-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi-util",
+ ]
+ 
+ [[package]]
+ name = "time"
+ version = "0.1.43"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "tinyvec"
+ version = "0.3.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "53953d2d3a5ad81d9f844a32f14ebb121f50b650cd59d0ee2a07cf13c617efed"
+ 
+ [[package]]
+ name = "tokio"
+ version = "0.1.22"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6"
+ dependencies = [
+- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-current-thread 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-fs 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-sync 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-threadpool 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-timer 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-udp 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-uds 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bytes",
++ "futures",
++ "mio",
++ "num_cpus",
++ "tokio-codec",
++ "tokio-current-thread",
++ "tokio-executor",
++ "tokio-fs",
++ "tokio-io",
++ "tokio-reactor",
++ "tokio-sync",
++ "tokio-tcp",
++ "tokio-threadpool",
++ "tokio-timer",
++ "tokio-udp",
++ "tokio-uds",
+ ]
+ 
+ [[package]]
+ name = "tokio-codec"
+ version = "0.1.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b"
+ dependencies = [
+- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bytes",
++ "futures",
++ "tokio-io",
+ ]
+ 
+ [[package]]
+ name = "tokio-core"
+ version = "0.1.17"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "aeeffbbb94209023feaef3c196a41cbcdafa06b4a6f893f68779bb5e53796f71"
+ dependencies = [
+- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-timer 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bytes",
++ "futures",
++ "iovec",
++ "log 0.4.11",
++ "mio",
++ "scoped-tls",
++ "tokio",
++ "tokio-executor",
++ "tokio-io",
++ "tokio-reactor",
++ "tokio-timer",
+ ]
+ 
+ [[package]]
+ name = "tokio-current-thread"
+ version = "0.1.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e"
+ dependencies = [
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures",
++ "tokio-executor",
+ ]
+ 
+ [[package]]
+ name = "tokio-executor"
+ version = "0.1.10"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671"
+ dependencies = [
+- "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-utils 0.7.2",
++ "futures",
+ ]
+ 
+ [[package]]
+ name = "tokio-fs"
+ version = "0.1.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4"
+ dependencies = [
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-threadpool 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures",
++ "tokio-io",
++ "tokio-threadpool",
+ ]
+ 
+ [[package]]
+ name = "tokio-io"
+ version = "0.1.13"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674"
+ dependencies = [
+- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bytes",
++ "futures",
++ "log 0.4.11",
+ ]
+ 
+ [[package]]
+ name = "tokio-process"
+ version = "0.2.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "382d90f43fa31caebe5d3bc6cfd854963394fff3b8cb59d5146607aaae7e7e43"
+ dependencies = [
+- "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio-named-pipes 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-signal 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-queue 0.1.2",
++ "futures",
++ "lazy_static",
++ "libc",
++ "log 0.4.11",
++ "mio",
++ "mio-named-pipes",
++ "tokio-io",
++ "tokio-reactor",
++ "tokio-signal",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "tokio-proto"
+ version = "0.1.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8fbb47ae81353c63c487030659494b295f6cb6576242f907f203473b191b0389"
+ dependencies = [
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+- "net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)",
+- "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)",
+- "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "smallvec 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "take 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures",
++ "log 0.3.9",
++ "net2",
++ "rand 0.3.23",
++ "slab 0.3.0",
++ "smallvec 0.2.1",
++ "take",
++ "tokio-core",
++ "tokio-io",
++ "tokio-service",
+ ]
+ 
+ [[package]]
+ name = "tokio-reactor"
+ version = "0.1.12"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351"
+ dependencies = [
+- "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-sync 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-utils 0.7.2",
++ "futures",
++ "lazy_static",
++ "log 0.4.11",
++ "mio",
++ "num_cpus",
++ "parking_lot",
++ "slab 0.4.2",
++ "tokio-executor",
++ "tokio-io",
++ "tokio-sync",
+ ]
+ 
+ [[package]]
+ name = "tokio-service"
+ version = "0.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "24da22d077e0f15f55162bdbdc661228c1581892f52074fb242678d015b45162"
+ dependencies = [
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures",
+ ]
+ 
+ [[package]]
+ name = "tokio-signal"
+ version = "0.2.9"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d0c34c6e548f101053321cba3da7cbb87a610b85555884c41b07da2eb91aff12"
+ dependencies = [
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio-uds 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)",
+- "signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures",
++ "libc",
++ "mio",
++ "mio-uds",
++ "signal-hook-registry",
++ "tokio-executor",
++ "tokio-io",
++ "tokio-reactor",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "tokio-sync"
+ version = "0.1.8"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee"
+ dependencies = [
+- "fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
++ "fnv",
++ "futures",
+ ]
+ 
+ [[package]]
+ name = "tokio-tcp"
+ version = "0.1.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72"
+ dependencies = [
+- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bytes",
++ "futures",
++ "iovec",
++ "mio",
++ "tokio-io",
++ "tokio-reactor",
+ ]
+ 
+ [[package]]
+ name = "tokio-threadpool"
+ version = "0.1.18"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89"
+ dependencies = [
+- "crossbeam-deque 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "crossbeam-queue 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
+- "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-deque",
++ "crossbeam-queue 0.2.3",
++ "crossbeam-utils 0.7.2",
++ "futures",
++ "lazy_static",
++ "log 0.4.11",
++ "num_cpus",
++ "slab 0.4.2",
++ "tokio-executor",
+ ]
+ 
+ [[package]]
+ name = "tokio-timer"
+ version = "0.2.13"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296"
+ dependencies = [
+- "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "crossbeam-utils 0.7.2",
++ "futures",
++ "slab 0.4.2",
++ "tokio-executor",
+ ]
+ 
+ [[package]]
+ name = "tokio-udp"
+ version = "0.1.6"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82"
+ dependencies = [
+- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bytes",
++ "futures",
++ "log 0.4.11",
++ "mio",
++ "tokio-codec",
++ "tokio-io",
++ "tokio-reactor",
+ ]
+ 
+ [[package]]
+ name = "tokio-uds"
+ version = "0.2.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ab57a4ac4111c8c9dbcf70779f6fc8bc35ae4b2454809febac840ad19bd7e4e0"
+ dependencies = [
+- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)",
+- "mio-uds 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+- "tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bytes",
++ "futures",
++ "iovec",
++ "libc",
++ "log 0.4.11",
++ "mio",
++ "mio-uds",
++ "tokio-codec",
++ "tokio-io",
++ "tokio-reactor",
+ ]
+ 
+ [[package]]
+ name = "try-lock"
+ version = "0.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ee2aa4715743892880f70885373966c83d73ef1b0838a664ef0c76fffd35e7c2"
+ 
+ [[package]]
+ name = "typenum"
+ version = "1.12.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33"
+ 
+ [[package]]
+ name = "unicase"
+ version = "2.6.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
+ dependencies = [
+- "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "version_check",
+ ]
+ 
+ [[package]]
+ name = "unicode-bidi"
+ version = "0.3.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"
+ dependencies = [
+- "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "matches",
+ ]
+ 
+ [[package]]
+ name = "unicode-normalization"
+ version = "0.1.13"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977"
+ dependencies = [
+- "tinyvec 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tinyvec",
+ ]
+ 
+ [[package]]
+ name = "unicode-width"
+ version = "0.1.8"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3"
+ 
+ [[package]]
+ name = "unicode-xid"
+ version = "0.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
+ 
+ [[package]]
+ name = "unicode-xid"
+ version = "0.2.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564"
+ 
+ [[package]]
+ name = "url"
+ version = "1.7.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a"
+ dependencies = [
+- "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
+- "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
+- "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "idna",
++ "matches",
++ "percent-encoding",
+ ]
+ 
+ [[package]]
+ name = "uuid"
+ version = "0.7.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a"
+ dependencies = [
+- "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.6.5",
+ ]
+ 
+ [[package]]
+ name = "vergen"
+ version = "3.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4ce50d8996df1f85af15f2cd8d33daae6e479575123ef4314a51a70a230739cb"
+ dependencies = [
+- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+- "chrono 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1",
++ "chrono",
+ ]
+ 
+ [[package]]
+ name = "version_check"
+ version = "0.9.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed"
+ 
+ [[package]]
+ name = "void"
+ version = "1.0.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
+ 
+ [[package]]
+ name = "vorbis"
+ version = "0.0.14"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5e8a194457075360557b82dac78f7ca2d65bbb6679bccfabae5f7c8c706cc776"
+ dependencies = [
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "ogg-sys 0.0.9 (registry+https://github.com/rust-lang/crates.io-index)",
+- "vorbis-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "vorbisfile-sys 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc",
++ "ogg-sys",
++ "vorbis-sys",
++ "vorbisfile-sys",
+ ]
+ 
+ [[package]]
+ name = "vorbis-sys"
+ version = "0.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3a0a8d7034313748da1d84b0adfa501f83f9ec83250f37fbacfa92a3580327c4"
+ dependencies = [
+- "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "ogg-sys 0.0.9 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
++ "gcc",
++ "libc",
++ "ogg-sys",
++ "pkg-config",
+ ]
+ 
+ [[package]]
+ name = "vorbisfile-sys"
+ version = "0.0.8"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4f4306d7e1ac4699b55e20de9483750b90c250913188efd7484db6bfbe9042d1"
+ dependencies = [
+- "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)",
+- "libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)",
+- "ogg-sys 0.0.9 (registry+https://github.com/rust-lang/crates.io-index)",
+- "pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
+- "vorbis-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "gcc",
++ "libc",
++ "ogg-sys",
++ "pkg-config",
++ "vorbis-sys",
+ ]
+ 
+ [[package]]
+ name = "want"
+ version = "0.0.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a05d9d966753fa4b5c8db73fcab5eed4549cfe0e1e4e66911e5564a0085c35d1"
+ dependencies = [
+- "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
+- "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
+- "try-lock 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "futures",
++ "log 0.4.11",
++ "try-lock",
+ ]
+ 
+ [[package]]
+ name = "wasi"
+ version = "0.9.0+wasi-snapshot-preview1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
+ 
+ [[package]]
+ name = "winapi"
+ version = "0.2.8"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
+ 
+ [[package]]
+ name = "winapi"
+ version = "0.3.9"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+ dependencies = [
+- "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi-i686-pc-windows-gnu",
++ "winapi-x86_64-pc-windows-gnu",
+ ]
+ 
+ [[package]]
+ name = "winapi-build"
+ version = "0.1.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
+ 
+ [[package]]
+ name = "winapi-i686-pc-windows-gnu"
+ version = "0.4.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+ 
+ [[package]]
+ name = "winapi-util"
+ version = "0.1.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+ dependencies = [
+- "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.9",
+ ]
+ 
+ [[package]]
+ name = "winapi-x86_64-pc-windows-gnu"
+ version = "0.4.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+ 
+ [[package]]
+ name = "ws2_32-sys"
+ version = "0.2.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"
+ dependencies = [
+- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+- "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.2.8",
++ "winapi-build",
+ ]
+ 
+ [[package]]
+ name = "zerocopy"
+ version = "0.2.8"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "992b9b31f80fd4a167f903f879b8ca43d6716cc368ea01df90538baa2dd34056"
+ dependencies = [
+- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+- "zerocopy-derive 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byteorder",
++ "zerocopy-derive",
+ ]
+ 
+ [[package]]
+ name = "zerocopy-derive"
+ version = "0.1.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b090467ecd0624026e8a6405d343ac7382592530d54881330b3fc8e400280fa5"
  dependencies = [
-  "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
-  "protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
+- "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
+- "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)",
+- "synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)",
+-]
+-
+-[metadata]
+-"checksum aes 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "54eb1d8fe354e5fc611daf4f2ea97dd45a765f4f1e4512306ec183ae2e8f20c9"
+-"checksum aes-ctr 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d2e5b0458ea3beae0d1d8c0f3946564f8e10f90646cf78c06b4351052058d1ee"
+-"checksum aes-soft 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cfd7e7ae3f9a1fb5c03b389fc6bb9a51400d0c13053f0dca698c832bfd893a0d"
+-"checksum aesni 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2f70a6b5f971e473091ab7cfb5ffac6cde81666c4556751d8d5620ead8abf100"
+-"checksum alga 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4f823d037a7ec6ea2197046bafd4ae150e6bc36f9ca347404f46a46823fa84f2"
+-"checksum alsa 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b4a0d4ebc8b23041c5de9bc9aee13b4bad844a589479701f31a5934cfe4aeb32"
+-"checksum alsa-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b0edcbbf9ef68f15ae1b620f722180b82a98b6f0628d30baa6b8d2a5abc87d58"
+-"checksum approx 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f0e60b75072ecd4168020818c0107f2857bb6c4e64252d8d3983f6263b40a5c3"
+-"checksum arc-swap 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "4d25d88fd6b8041580a654f9d0c581a047baee2b3efee13275f2fc392fc75034"
+-"checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+-"checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2"
+-"checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d"
+-"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e"
+-"checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643"
+-"checksum bindgen 0.53.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c72a978d268b1d70b0e963217e60fdabd9523a941457a6c42a7315d15c7e89e5"
+-"checksum bit-set 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6e11e16035ea35e4e5997b393eacbf6f63983188f7a2ad25bfb13465f5ad59de"
+-"checksum bit-vec 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5f0dc55f2d8a1a85650ac47858bb001b4c0dd73d79e3c455a842925e68d29cd3"
+-"checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d"
+-"checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5"
+-"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
+-"checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b"
+-"checksum block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1c924d49bd09e7c06003acda26cd9742e796e34282ec6c1189404dee0c1f4774"
+-"checksum block-modes 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "31aa8410095e39fdb732909fb5730a48d5bd7c2e3cd76bd1b07b3dbea130c529"
+-"checksum block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5"
+-"checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7"
+-"checksum byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de"
+-"checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c"
+-"checksum cc 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)" = "f9a06fb2e53271d7c279ec1efea6ab691c35a2ae67ec0d91d7acec0caf13b518"
+-"checksum cexpr 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27"
+-"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
+-"checksum chrono 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" = "c74d84029116787153e02106bf53e66828452a4b325cc8652b788b5967c0a0b6"
+-"checksum clang-sys 0.29.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fe6837df1d5cba2397b835c8530f51723267e16abbf83892e9e5af4f0e5dd10a"
+-"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
+-"checksum core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "716c271e8613ace48344f723b60b900a93150271e5be206212d052bbc0883efa"
+-"checksum coreaudio-rs 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f229761965dad3e9b11081668a6ea00f1def7aa46062321b5ec245b834f6e491"
+-"checksum coreaudio-sys 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d6570ee6e089131e928d5ec9236db9e818aa3cf850f48b0eec6ef700571271d4"
+-"checksum cpal 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d58ae1ed6536b1b233f5e3aeb6997a046ddb4d05e3f61701b58a92eb254a829e"
+-"checksum crossbeam-deque 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285"
+-"checksum crossbeam-epoch 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace"
+-"checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b"
+-"checksum crossbeam-queue 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570"
+-"checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6"
+-"checksum crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
+-"checksum crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5"
+-"checksum ctr 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "022cd691704491df67d25d006fe8eca083098253c4d43516c2206479c58c6736"
+-"checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5"
+-"checksum dns-sd 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d748509dea20228f63ba519bf142ce2593396386125b01f5b0d6412dab972087"
+-"checksum env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3"
+-"checksum error-chain 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d371106cc88ffdfb1eabd7111e432da544f16f3e2d7bf1dfe8bf575f1df045cd"
+-"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed"
+-"checksum fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+-"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
+-"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
+-"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
+-"checksum futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)" = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef"
+-"checksum futures-channel 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f366ad74c28cca6ba456d95e6422883cfb4b252a83bed929c83abfdbbf2967d5"
+-"checksum futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "59f5fff90fd5d971f936ad674802482ba441b6f09ba5e15fd8b39145582ca399"
+-"checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4"
+-"checksum futures-executor 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "10d6bb888be1153d3abeb9006b11b02cf5e9b209fda28693c31ae1e4e012e314"
+-"checksum futures-macro 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d0b5a30a4328ab5473878237c447333c093297bded83a4983d10f4deea240d39"
+-"checksum futures-sink 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3f2032893cb734c7a05d85ce0cc8b8c4075278e93b24b66f9de99d6eb0fa8acc"
+-"checksum futures-task 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "bdb66b5f09e22019b1ab0830f7785bcea8e7a42148683f99214f73f8ec21a626"
+-"checksum futures-util 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8764574ff08b701a084482c3c7031349104b07ac897393010494beaa18ce32c6"
+-"checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2"
+-"checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec"
+-"checksum getopts 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)" = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5"
+-"checksum getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb"
+-"checksum glib 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "40fb573a09841b6386ddf15fd4bc6655b4f5b106ca962f57ecaecde32a0061c0"
+-"checksum glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "95856f3802f446c05feffa5e24859fe6a183a7cb849c8449afc35c86b1e316e2"
+-"checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
+-"checksum gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31d1a804f62034eccf370006ccaef3708a71c31d561fee88564abe71177553d9"
+-"checksum gstreamer 0.15.7 (registry+https://github.com/rust-lang/crates.io-index)" = "ce8664a114cd6ec16bece783d5eee59496919915b1f6884400ba4a953274a163"
+-"checksum gstreamer-app 0.15.6 (registry+https://github.com/rust-lang/crates.io-index)" = "789784e8d42f5add1e1e965cf9f7e2d09e21dd0756bae6148f971db9a761d6a9"
+-"checksum gstreamer-app-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bf869ce152c23bca5d761ab62146b47f750d0b28d4d499731857532897d48167"
+-"checksum gstreamer-base 0.15.4 (registry+https://github.com/rust-lang/crates.io-index)" = "42552f75cc6c260b0be180d5c955f4cd74bd170289c622404c25f1210b521c12"
+-"checksum gstreamer-base-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ba384f52174b3c586593fca32642680a9e67961fea9f4cd8419f678965023bed"
+-"checksum gstreamer-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1d18da01b97d0ab5896acd5151e4c155acefd0e6c03c3dd24dd133ba054053db"
+-"checksum hermit-abi 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "3deed196b6e7f9e44a2ae8d94225d80302d81208b1bb673fd21fe634645c85a9"
+-"checksum hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77"
+-"checksum hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695"
+-"checksum hostname 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867"
+-"checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9"
+-"checksum humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
+-"checksum hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)" = "34a590ca09d341e94cddf8e5af0bbccde205d5fbc2fa3c09dd67c7f85cea59d7"
+-"checksum hyper-proxy 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "44f0925de2747e481e6e477dd212c25e8f745567f02f6182e04d27b97c3fbece"
+-"checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e"
+-"checksum if-addrs 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "28538916eb3f3976311f5dfbe67b5362d0add1293d0a9cad17debf86f8e3aa48"
+-"checksum if-addrs-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "de74b9dd780476e837e5eb5ab7c88b49ed304126e412030a0adba99c8efe79ea"
+-"checksum iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e"
+-"checksum itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6"
+-"checksum jack 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1e15fc592e2e5a74a105ff507083c04db1aa20ba1b90d425362ba000e57422df"
+-"checksum jack-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c0d4ca501477fd3cd93a36df581046e5d6338ed826cf7e9b8d302603521e6cc3"
+-"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
+-"checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a"
+-"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+-"checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f"
+-"checksum lewton 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8d542c1a317036c45c2aa1cf10cc9d403ca91eb2d333ef1a4917e5cb10628bd0"
+-"checksum libc 0.2.73 (registry+https://github.com/rust-lang/crates.io-index)" = "bd7d4bd64732af4bf3a67f367c27df8520ad7e230c5817b8ff485864d80242b9"
+-"checksum libloading 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fd38073de8f7965d0c17d30546d4bb6da311ab428d1c7a3fc71dff7f9d4979b9"
+-"checksum libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753"
+-"checksum libm 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a"
+-"checksum libmdns 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "5d8582c174736c53633bc482ac709b24527c018356c3dc6d8e25a788b06b394e"
+-"checksum libpulse-sys 0.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9bb11b06faf883500c1b625cf4453e6c7737e9df9c7ba01df3f84b22b083e4ac"
+-"checksum librespot-tremor 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "97f525bff915d478a76940a7b988e5ea34911ba7280c97bd3a7673f54d68b4fe"
+-"checksum linear-map 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bfae20f6b19ad527b550c223fddc3077a547fc70cda94b9b566575423fd303ee"
+-"checksum lock_api 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75"
+-"checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b"
+-"checksum log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b"
+-"checksum match_cfg 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4"
+-"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
+-"checksum matrixmultiply 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d4f7ec66360130972f34830bfad9ef05c6610a43938a467bcc9ab9369ab3478f"
+-"checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
+-"checksum memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400"
+-"checksum memoffset 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c198b026e1bbf08a937e94c6c60f9ec4a2267f5b0d2eec9c1b21b061ce2be55f"
+-"checksum mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
+-"checksum mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)" = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430"
+-"checksum mio-named-pipes 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0840c1c50fd55e521b247f949c241c9997709f23bd7f023b9762cd561e935656"
+-"checksum mio-uds 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0"
+-"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
+-"checksum miow 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "07b88fb9795d4d36d62a012dfbf49a8f5cf12751f36d31a9dbe66d528e58979e"
+-"checksum muldiv 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0419348c027fa7be448d2ae7ea0e4e04c2334c31dc4e74ab29f00a2a7ca69204"
+-"checksum multimap 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d8883adfde9756c1d30b0f519c9b8c502a94b41ac62f696453c37c7fc0a958ce"
+-"checksum nalgebra 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aaa9fddbc34c8c35dd2108515587b8ce0cab396f17977b8c738568e4edb521a2"
+-"checksum net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)" = "2ba7c918ac76704fb42afcbbb43891e72731f3dcca3bef2a19786297baf14af7"
+-"checksum nix 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a2c5afeb0198ec7be8569d666644b574345aad2e95a53baf3a532da3e0f3fb32"
+-"checksum nom 5.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af"
+-"checksum num 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "4703ad64153382334aa8db57c637364c322d3372e097840c72000dabdcf6156e"
+-"checksum num-bigint 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304"
+-"checksum num-complex 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95"
+-"checksum num-integer 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b"
+-"checksum num-iter 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e6b7c748f995c4c29c5f5ae0248536e04a5739927c74ec0fa564805094b9f"
+-"checksum num-rational 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef"
+-"checksum num-traits 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)" = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611"
+-"checksum num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"
+-"checksum ogg 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d79f1db9148be9d0e174bb3ac890f6030fcb1ed947267c5a91ee4c91b5a91e15"
+-"checksum ogg-sys 0.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "a95b8c172e17df1a41bf8d666301d3b2c4efeb90d9d0415e2a4dc0668b35fdb2"
+-"checksum once_cell 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0b631f7e854af39a1739f401cf34a8a013dfe09eac4fa4dba91e9768bd28168d"
+-"checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c"
+-"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252"
+-"checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b"
+-"checksum paste 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880"
+-"checksum paste-impl 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6"
+-"checksum pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9"
+-"checksum peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
+-"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831"
+-"checksum pin-project 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)" = "12e3a6cdbfe94a5e4572812a0201f8c0ed98c1c452c7b8563ce2276988ef9c17"
+-"checksum pin-project-internal 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)" = "6a0ffd45cf79d88737d7cc85bfd5d2894bee1139b356e616fe85dc389c61aaf7"
+-"checksum pin-utils 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+-"checksum pkg-config 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)" = "d36492546b6af1463394d46f0c834346f31548646f6ba10849802c9c9a27ac33"
+-"checksum portaudio-rs 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "cdb6b5eff96ccc9bf44d34c379ab03ae944426d83d1694345bdf8159d561d562"
+-"checksum portaudio-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5194a4fa953b4ffd851c320ef6f0484cd7278cb7169ea9d6c433e49b23f7b7f5"
+-"checksum ppv-lite86 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612ea"
+-"checksum proc-macro-hack 0.5.16 (registry+https://github.com/rust-lang/crates.io-index)" = "7e0456befd48169b9f13ef0f0ad46d492cf9d2dbb918bcf38e01eed4ce3ec5e4"
+-"checksum proc-macro-nested 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a"
+-"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
+-"checksum proc-macro2 1.0.19 (registry+https://github.com/rust-lang/crates.io-index)" = "04f5f085b5d71e2188cb8271e5da0161ad52c3f227a661a3c135fdf28e258b12"
+-"checksum protobuf 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8e86d370532557ae7573551a1ec8235a0f8d6cb276c7c9e6aa490b511c447485"
+-"checksum protobuf-codegen 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de113bba758ccf2c1ef816b127c958001b7831136c9bc3f8e9ec695ac4e82b0c"
+-"checksum protobuf-codegen-pure 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d1a4febc73bf0cada1d77c459a0c8e5973179f1cfd5b0f1ab789d45b17b6440"
+-"checksum quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
+-"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1"
+-"checksum quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37"
+-"checksum rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)" = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c"
+-"checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293"
+-"checksum rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9"
+-"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
+-"checksum rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
+-"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
+-"checksum rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
+-"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
+-"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"
+-"checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
+-"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4"
+-"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
+-"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08"
+-"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b"
+-"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071"
+-"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44"
+-"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c"
+-"checksum rawpointer 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
+-"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
+-"checksum redox_syscall 0.1.57 (registry+https://github.com/rust-lang/crates.io-index)" = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
+-"checksum regex 1.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3780fcf44b193bc4d09f36d2a3c87b251da4a046c87795a0d35f4f927ad8e6"
+-"checksum regex-syntax 0.6.18 (registry+https://github.com/rust-lang/crates.io-index)" = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8"
+-"checksum relay 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1576e382688d7e9deecea24417e350d3062d97e32e45d70b1cde65994ff1489a"
+-"checksum remove_dir_all 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
+-"checksum rodio 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5d0f961b254e66d147a7b550c78b01308934c97d807a34b417fd0f5a0a0f3a2d"
+-"checksum rpassword 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c34fa7bcae7fca3c8471e8417088bbc3ad9af8066b0ecf4f3c0d98a0d772716e"
+-"checksum rustc-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+-"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
+-"checksum ryu 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
+-"checksum safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072"
+-"checksum scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "332ffa32bf586782a3efaeb58f127980944bbc8c4d6913a86107ac2a5ab24b28"
+-"checksum scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+-"checksum sdl2 0.32.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d051a07231e303f5f719da78cb6f7394f6d5b54f733aef5b0b447804a83edd7b"
+-"checksum sdl2-sys 0.32.6 (registry+https://github.com/rust-lang/crates.io-index)" = "34e71125077d297d57e4c1acfe8981b5bdfbf5a20e7b589abfdcb33bf1127f86"
+-"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
+-"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
+-"checksum serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)" = "5317f7588f0a5078ee60ef675ef96735a1442132dc645eb1d12c018620ed8cd3"
+-"checksum serde_derive 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)" = "2a0be94b04690fbaed37cddffc5c134bf537c8e3329d53e982fe04c374978f8e"
+-"checksum serde_json 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)" = "3433e879a558dde8b5e8feb2a04899cf34fdde1fafb894687e52105fc1162ac3"
+-"checksum sha-1 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df"
+-"checksum sha2 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69"
+-"checksum shannon 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7ea5b41c9427b56caa7b808cb548a04fb50bb5b9e98590b53f28064ff4174561"
+-"checksum shell-words 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "39acde55a154c4cd3ae048ac78cc21c25f3a0145e44111b523279113dce0d94a"
+-"checksum shlex 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2"
+-"checksum signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41"
+-"checksum slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "17b4fcaed89ab08ef143da37bc52adbcc04d4a69014f4c1208d6b51f0c47bc23"
+-"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
+-"checksum smallvec 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4c8cbcd6df1e117c2210e13ab5109635ad68a929fcbb8964dc965b76cb5ee013"
+-"checksum smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6"
+-"checksum socket2 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)" = "03088793f677dce356f3ccc2edb1b314ad191ab702a5de3faf49304f7e104918"
+-"checksum stdweb 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ef5430c8e36b713e13b48a9f709cc21e046723fe44ce34587b73a830203b533e"
+-"checksum stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8131256a5896cabcf5eb04f4d6dacbe1aefda854b0d9896e09cb58829ec5638c"
+-"checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee"
+-"checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5"
+-"checksum syn 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)" = "fb7f4c519df8c117855e19dd8cc851e89eb746fe7a73f0157e0d95fdec5369b0"
+-"checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f"
+-"checksum take 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b157868d8ac1f56b64604539990685fa7611d8fa9e5476cf0c02cf34d32917c5"
+-"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9"
+-"checksum termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f"
+-"checksum time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
+-"checksum tinyvec 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "53953d2d3a5ad81d9f844a32f14ebb121f50b650cd59d0ee2a07cf13c617efed"
+-"checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6"
+-"checksum tokio-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b"
+-"checksum tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "aeeffbbb94209023feaef3c196a41cbcdafa06b4a6f893f68779bb5e53796f71"
+-"checksum tokio-current-thread 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e"
+-"checksum tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671"
+-"checksum tokio-fs 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4"
+-"checksum tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674"
+-"checksum tokio-process 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "382d90f43fa31caebe5d3bc6cfd854963394fff3b8cb59d5146607aaae7e7e43"
+-"checksum tokio-proto 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fbb47ae81353c63c487030659494b295f6cb6576242f907f203473b191b0389"
+-"checksum tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351"
+-"checksum tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "24da22d077e0f15f55162bdbdc661228c1581892f52074fb242678d015b45162"
+-"checksum tokio-signal 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "d0c34c6e548f101053321cba3da7cbb87a610b85555884c41b07da2eb91aff12"
+-"checksum tokio-sync 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee"
+-"checksum tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72"
+-"checksum tokio-threadpool 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89"
+-"checksum tokio-timer 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296"
+-"checksum tokio-udp 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82"
+-"checksum tokio-uds 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "ab57a4ac4111c8c9dbcf70779f6fc8bc35ae4b2454809febac840ad19bd7e4e0"
+-"checksum try-lock 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee2aa4715743892880f70885373966c83d73ef1b0838a664ef0c76fffd35e7c2"
+-"checksum typenum 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33"
+-"checksum unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
+-"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"
+-"checksum unicode-normalization 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977"
+-"checksum unicode-width 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3"
+-"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
+-"checksum unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564"
+-"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a"
+-"checksum uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a"
+-"checksum vergen 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ce50d8996df1f85af15f2cd8d33daae6e479575123ef4314a51a70a230739cb"
+-"checksum version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed"
+-"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
+-"checksum vorbis 0.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "5e8a194457075360557b82dac78f7ca2d65bbb6679bccfabae5f7c8c706cc776"
+-"checksum vorbis-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3a0a8d7034313748da1d84b0adfa501f83f9ec83250f37fbacfa92a3580327c4"
+-"checksum vorbisfile-sys 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "4f4306d7e1ac4699b55e20de9483750b90c250913188efd7484db6bfbe9042d1"
+-"checksum want 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a05d9d966753fa4b5c8db73fcab5eed4549cfe0e1e4e66911e5564a0085c35d1"
+-"checksum wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
+-"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
+-"checksum winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+-"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
+-"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+-"checksum winapi-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+-"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+-"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"
+-"checksum zerocopy 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "992b9b31f80fd4a167f903f879b8ca43d6716cc368ea01df90538baa2dd34056"
+-"checksum zerocopy-derive 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b090467ecd0624026e8a6405d343ac7382592530d54881330b3fc8e400280fa5"
++ "proc-macro2 0.4.30",
++ "syn 0.15.44",
++ "synstructure",
++]
diff --git a/pkgs/applications/audio/librespot/default.nix b/pkgs/applications/audio/librespot/default.nix
index 13aa4fe5bc2..858d8e795e1 100644
--- a/pkgs/applications/audio/librespot/default.nix
+++ b/pkgs/applications/audio/librespot/default.nix
@@ -4,18 +4,17 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "librespot";
-  version = "0.1.3";
+  version = "0.1.6";
 
   src = fetchFromGitHub {
     owner = "librespot-org";
     repo = "librespot";
     rev = "v${version}";
-    sha256 = "1ixh47yvaamrpzagqsiimc3y6bi4nbym95843d23am55zkrgnmy5";
+    sha256 = "153i9n3qwmmwc29f62cz8nbqrlry16iygvibm1sdnvpf0s6wk5f3";
   };
 
-  cargoSha256 = "1csls8kzzx28ng6w9vdwhnnav5sqp2m5fj430db5z306xh5acg3d";
-
   cargoPatches = [ ./cargo-lock.patch ];
+  cargoSha256 = "11d64rpq4b5rdxk5wx0hhzgc6mvs6h2br0w3kfncfklp67vn3v4v";
 
   cargoBuildFlags = with lib; [
     "--no-default-features"
diff --git a/pkgs/applications/audio/mopidy/default.nix b/pkgs/applications/audio/mopidy/default.nix
index 0acc1545a8d..0deecaec7ff 100644
--- a/pkgs/applications/audio/mopidy/default.nix
+++ b/pkgs/applications/audio/mopidy/default.nix
@@ -21,6 +21,8 @@ lib.makeScope newScope (self: with self; {
 
   mopidy-musicbox-webclient = callPackage ./musicbox-webclient.nix { };
 
+  mopidy-podcast = callPackage ./podcast.nix { };
+
   mopidy-scrobbler = callPackage ./scrobbler.nix { };
 
   mopidy-somafm = callPackage ./somafm.nix { };
diff --git a/pkgs/applications/audio/mopidy/podcast.nix b/pkgs/applications/audio/mopidy/podcast.nix
new file mode 100644
index 00000000000..8a5c4ec2b3d
--- /dev/null
+++ b/pkgs/applications/audio/mopidy/podcast.nix
@@ -0,0 +1,31 @@
+{ lib, python3Packages, mopidy }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "mopidy-podcast";
+  version = "3.0.0";
+
+  src = python3Packages.fetchPypi {
+    inherit version;
+    pname = "Mopidy-Podcast";
+    sha256 = "1z2b523yvdpcf8p7m7kczrvaw045lmxzhq4qj00dflxa2yw61qxr";
+  };
+
+  propagatedBuildInputs = [
+    mopidy
+    python3Packages.cachetools
+    python3Packages.uritools
+  ];
+
+  checkInputs = with python3Packages; [
+    pytestCheckHook
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/tkem/mopidy-podcast";
+    description = "Mopidy extension for browsing and playing podcasts";
+    license = licenses.asl20;
+    maintainers = [
+      maintainers.daneads
+    ];
+  };
+}
diff --git a/pkgs/applications/audio/musikcube/default.nix b/pkgs/applications/audio/musikcube/default.nix
index 4a80ea09878..c8e18c03c1e 100644
--- a/pkgs/applications/audio/musikcube/default.nix
+++ b/pkgs/applications/audio/musikcube/default.nix
@@ -4,7 +4,7 @@
 , boost
 , curl
 , fetchFromGitHub
-, ffmpeg_3
+, ffmpeg
 , lame
 , libev
 , libmicrohttpd
@@ -17,13 +17,13 @@
 
 stdenv.mkDerivation rec {
   pname = "musikcube";
-  version = "0.96.5";
+  version = "0.96.7";
 
   src = fetchFromGitHub {
     owner = "clangen";
     repo = pname;
     rev = version;
-    sha256 = "sha256-GxMQPP8i/NWvduf10f+xVyuG666pChj9RsiF4jfygyY=";
+    sha256 = "1y00vwn1h10cfflxrm5bk271ak9gilhjycgi44hlkkhmf5bdgn35";
   };
 
   nativeBuildInputs = [
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
     alsaLib
     boost
     curl
-    ffmpeg_3
+    ffmpeg
     lame
     libev
     libmicrohttpd
diff --git a/pkgs/applications/blockchains/bitcoin.nix b/pkgs/applications/blockchains/bitcoin.nix
index b241fcc49ee..1f222477ab2 100644
--- a/pkgs/applications/blockchains/bitcoin.nix
+++ b/pkgs/applications/blockchains/bitcoin.nix
@@ -22,7 +22,7 @@
 
 with lib;
 let
-  version = "0.21.0";
+  version = "0.21.1";
   majorMinorVersion = versions.majorMinor version;
   desktop = fetchurl {
     url = "https://raw.githubusercontent.com/bitcoin-core/packaging/${majorMinorVersion}/debian/bitcoin-qt.desktop";
@@ -38,7 +38,7 @@ stdenv.mkDerivation rec {
       "https://bitcoincore.org/bin/bitcoin-core-${version}/bitcoin-${version}.tar.gz"
       "https://bitcoin.org/bin/bitcoin-core-${version}/bitcoin-${version}.tar.gz"
     ];
-    sha256 = "1a91202c62ee49fb64d57a52b8d6d01cd392fffcbef257b573800f9289655f37";
+    sha256 = "caff23449220cf45753f312cefede53a9eac64000bb300797916526236b6a1e0";
   };
 
   nativeBuildInputs =
diff --git a/pkgs/applications/blockchains/miniscript/default.nix b/pkgs/applications/blockchains/miniscript/default.nix
new file mode 100644
index 00000000000..0520101c4cc
--- /dev/null
+++ b/pkgs/applications/blockchains/miniscript/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, lib, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "miniscript";
+  version = "unstable-2020-12-01";
+
+  src = fetchFromGitHub {
+    owner = "sipa";
+    repo = pname;
+    rev = "02682a398a35b410571b10cde7f39837141ddad6";
+    sha256 = "079jz4g88cfzfm9a6ykby9haxwcs033c1288mgr8cl2hw4qd2sjl";
+  };
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/bin
+    cp miniscript $out/bin/miniscript
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description     = "Compiler and inspector for the miniscript Bitcoin policy language";
+    longDescription = "Miniscript is a language for writing (a subset of) Bitcoin Scripts in a structured way, enabling analysis, composition, generic signing and more.";
+    homepage        = "http://bitcoin.sipa.be/miniscript/";
+    license         = licenses.mit;
+    platforms       = platforms.linux;
+    maintainers     = with maintainers; [ RaghavSood jb55 ];
+  };
+}
diff --git a/pkgs/applications/blockchains/monero-gui/default.nix b/pkgs/applications/blockchains/monero-gui/default.nix
index 5f430bc8869..47df64b514f 100644
--- a/pkgs/applications/blockchains/monero-gui/default.nix
+++ b/pkgs/applications/blockchains/monero-gui/default.nix
@@ -17,22 +17,15 @@
 
 with lib;
 
-let
-  arch = if stdenv.isx86_64  then "x86-64"
-    else if stdenv.isi686    then "i686"
-    else if stdenv.isAarch64 then "armv8-a"
-    else throw "unsupported architecture";
-in
-
 stdenv.mkDerivation rec {
   pname = "monero-gui";
-  version = "0.17.1.9";
+  version = "0.17.2.1";
 
   src = fetchFromGitHub {
     owner  = "monero-project";
     repo   = "monero-gui";
     rev    = "v${version}";
-    sha256 = "0143mmxk0jfb5pmjlx6v0knvf8v49kmkpjxlp6rw8lwnlf71xadn";
+    sha256 = "1apjvpvn6hg0k0ak6wpg4prcdcslnb6fqhzzg2p4iy846f0ai9ji";
   };
 
   nativeBuildInputs = [
@@ -58,7 +51,10 @@ stdenv.mkDerivation rec {
     chmod -R +w source/monero
   '';
 
-  patches = [ ./move-log-file.patch ];
+  patches = [
+    ./move-log-file.patch
+    ./use-system-libquirc.patch
+  ];
 
   postPatch = ''
     # set monero-gui version
@@ -69,17 +65,15 @@ stdenv.mkDerivation rec {
     substituteInPlace src/daemon/DaemonManager.cpp \
       --replace 'QApplication::applicationDirPath() + "' '"${monero}/bin'
 
-    # only build external deps, *not* the full monero
+    # 1: only build external deps, *not* the full monero
+    # 2: use nixpkgs libraries
     substituteInPlace CMakeLists.txt \
       --replace 'add_subdirectory(monero)' \
-                'add_subdirectory(monero EXCLUDE_FROM_ALL)'
-
-    # use nixpkgs quirc
-    substituteInPlace CMakeLists.txt \
+                'add_subdirectory(monero EXCLUDE_FROM_ALL)' \
       --replace 'add_subdirectory(external)' ""
   '';
 
-  cmakeFlags = [ "-DARCH=${arch}" ];
+  cmakeFlags = [ "-DARCH=default" ];
 
   desktopItem = makeDesktopItem {
     name = "monero-wallet-gui";
diff --git a/pkgs/applications/blockchains/monero-gui/use-system-libquirc.patch b/pkgs/applications/blockchains/monero-gui/use-system-libquirc.patch
new file mode 100644
index 00000000000..b60057294b1
--- /dev/null
+++ b/pkgs/applications/blockchains/monero-gui/use-system-libquirc.patch
@@ -0,0 +1,37 @@
+diff --git a/src/QR-Code-scanner/CMakeLists.txt b/src/QR-Code-scanner/CMakeLists.txt
+index 15e288df..2e9b3305 100644
+--- a/src/QR-Code-scanner/CMakeLists.txt
++++ b/src/QR-Code-scanner/CMakeLists.txt
+@@ -1,11 +1,18 @@
++find_library(QUIRC_LIBRARY quirc REQUIRED)
++find_path(QUIRC_INCLUDE_DIR quirc.h REQUIRED)
++
+ add_library(qrdecoder STATIC
+     Decoder.cpp
+ )
++target_include_directories(qrdecoder
++    PUBLIC
++        ${QUIRC_INCLUDE_DIR}
++)
+ target_link_libraries(qrdecoder
+     PUBLIC
+         Qt5::Gui
+     PRIVATE
+-        quirc
++        ${QUIRC_LIBRARY}
+ )
+ 
+ if(WITH_SCANNER)
+diff --git a/src/QR-Code-scanner/Decoder.cpp b/src/QR-Code-scanner/Decoder.cpp
+index 1bb99140..353ca189 100644
+--- a/src/QR-Code-scanner/Decoder.cpp
++++ b/src/QR-Code-scanner/Decoder.cpp
+@@ -30,7 +30,7 @@
+ 
+ #include <limits>
+ 
+-#include "quirc.h"
++#include <quirc.h>
+ 
+ QrDecoder::QrDecoder()
+     : m_qr(quirc_new())
diff --git a/pkgs/applications/blockchains/monero/default.nix b/pkgs/applications/blockchains/monero/default.nix
index 3be8b908c7a..2a12bfe872b 100644
--- a/pkgs/applications/blockchains/monero/default.nix
+++ b/pkgs/applications/blockchains/monero/default.nix
@@ -17,13 +17,13 @@ assert trezorSupport -> all (x: x!=null) [ libusb1 protobuf python3 ];
 
 stdenv.mkDerivation rec {
   pname = "monero";
-  version = "0.17.1.9";
+  version = "0.17.2.0";
 
   src = fetchFromGitHub {
     owner = "monero-project";
     repo = "monero";
     rev = "v${version}";
-    sha256 = "0jqss4csvkcrhrmaa3vrnyv6yiwqpbfw7037clx9xcfm4qrrfiwy";
+    sha256 = "0jwlmrpzisvw1c06cvd5b3s3hd4w0pa1qmrypfwah67qj3x6hnb6";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/applications/editors/bluej/default.nix b/pkgs/applications/editors/bluej/default.nix
index 9b28de9440f..a34d6983b2f 100644
--- a/pkgs/applications/editors/bluej/default.nix
+++ b/pkgs/applications/editors/bluej/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "bluej";
-  version = "5.0.0";
+  version = "5.0.1";
   src = fetchurl {
     # We use the deb here. First instinct might be to go for the "generic" JAR
     # download, but that is actually a graphical installer that is much harder
     # to unpack than the deb.
     url = "https://www.bluej.org/download/files/BlueJ-linux-${builtins.replaceStrings ["."] [""] version}.deb";
-    sha256 = "sha256-U81FIf67Qm/86+hA9iUCHt61dxiZsTkkequlVjft6/0=";
+    sha256 = "sha256-KhNhJ2xsw1g2yemwP6NQmJvk4cxZAQQNPEUBuLso5qM=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/applications/editors/emacs-modes/emacs2nix.nix b/pkgs/applications/editors/emacs-modes/emacs2nix.nix
index e29a19713bd..cc82646870c 100644
--- a/pkgs/applications/editors/emacs-modes/emacs2nix.nix
+++ b/pkgs/applications/editors/emacs-modes/emacs2nix.nix
@@ -4,8 +4,8 @@ let
   src = pkgs.fetchgit {
     url = "https://github.com/ttuegel/emacs2nix.git";
     fetchSubmodules = true;
-    rev = "b815a9323c1f58f6c163a1f968939c57a8b6cfa0";
-    sha256 = "183xlmhjmj4z2zssc0pw990h7bf3bam8zqswnf1zcsyp8z7yrl5g";
+    rev = "860da04ca91cbb69c9b881a54248d16bdaaf9923";
+    sha256 = "1r3xmyk9rfgx7ln69dk8mgbnh3awcalm3r1c5ia2shlsrymvv1df";
   };
 
 in pkgs.mkShell {
diff --git a/pkgs/applications/editors/emacs-modes/melpa-packages.nix b/pkgs/applications/editors/emacs-modes/melpa-packages.nix
index e5e2bac964f..5a1c9168bc4 100644
--- a/pkgs/applications/editors/emacs-modes/melpa-packages.nix
+++ b/pkgs/applications/editors/emacs-modes/melpa-packages.nix
@@ -362,6 +362,7 @@ let
         zmq = super.zmq.overrideAttrs (old: {
           stripDebugList = [ "share" ];
           preBuild = ''
+            export EZMQ_LIBDIR=$(mktemp -d)
             make
           '';
           nativeBuildInputs = [
@@ -372,7 +373,7 @@ let
             (pkgs.zeromq.override { enableDrafts = true; })
           ];
           postInstall = ''
-            mv $out/share/emacs/site-lisp/elpa/zmq-*/src/.libs/emacs-zmq.so $out/share/emacs/site-lisp/elpa/zmq-*
+            mv $EZMQ_LIBDIR/emacs-zmq.* $out/share/emacs/site-lisp/elpa/zmq-*
             rm -r $out/share/emacs/site-lisp/elpa/zmq-*/src
             rm $out/share/emacs/site-lisp/elpa/zmq-*/Makefile
           '';
diff --git a/pkgs/applications/editors/emacs-modes/update-melpa.el b/pkgs/applications/editors/emacs-modes/update-melpa.el
index b315777620e..c8c1bfee566 100644
--- a/pkgs/applications/editors/emacs-modes/update-melpa.el
+++ b/pkgs/applications/editors/emacs-modes/update-melpa.el
@@ -99,7 +99,10 @@ return Promise to resolve in that process."
             ("github"    (list "nix-prefetch-url"
                                "--unpack" (concat "https://github.com/" repo "/archive/" commit ".tar.gz")))
             ("gitlab"    (list "nix-prefetch-url"
-                               "--unpack" (concat "https://gitlab.com/" repo "/repository/archive.tar.gz?ref=" commit)))
+                               "--unpack" (concat "https://gitlab.com/api/v4/projects/"
+                                                  (url-hexify-string repo)
+                                                  "/repository/archive.tar.gz?ref="
+                                                  commit)))
             ("bitbucket" (list "nix-prefetch-hg"
                                (concat "https://bitbucket.com/" repo) commit))
             ("hg"        (list "nix-prefetch-hg"
diff --git a/pkgs/applications/editors/neovim/default.nix b/pkgs/applications/editors/neovim/default.nix
index 3e5de3d5fc1..1b4835064f9 100644
--- a/pkgs/applications/editors/neovim/default.nix
+++ b/pkgs/applications/editors/neovim/default.nix
@@ -6,7 +6,7 @@
 
 # now defaults to false because some tests can be flaky (clipboard etc)
 , doCheck ? false
-, nodejs ? null, fish ? null, python ? null
+, nodejs ? null, fish ? null, python3 ? null
 }:
 
 with lib;
@@ -19,7 +19,7 @@ let
       ]
     ));
 
-  pyEnv = python.withPackages(ps: [ ps.pynvim ps.msgpack ]);
+  pyEnv = python3.withPackages(ps: with ps; [ pynvim msgpack ]);
 
   # FIXME: this is verry messy and strange.
   # see https://github.com/NixOS/nixpkgs/pull/80528
diff --git a/pkgs/applications/editors/neovim/neovim-qt.nix b/pkgs/applications/editors/neovim/neovim-qt.nix
index d925ddd2a52..0a4d17d997b 100644
--- a/pkgs/applications/editors/neovim/neovim-qt.nix
+++ b/pkgs/applications/editors/neovim/neovim-qt.nix
@@ -1,5 +1,5 @@
 { lib, mkDerivation, fetchFromGitHub, cmake, doxygen, makeWrapper
-, msgpack, neovim, pythonPackages, qtbase }:
+, msgpack, neovim, python3Packages, qtbase }:
 
 mkDerivation rec {
   pname = "neovim-qt-unwrapped";
@@ -20,7 +20,7 @@ mkDerivation rec {
   buildInputs = [
     neovim.unwrapped # only used to generate help tags at build time
     qtbase
-  ] ++ (with pythonPackages; [
+  ] ++ (with python3Packages; [
     jinja2 python msgpack
   ]);
 
diff --git a/pkgs/applications/editors/neovim/neovim-remote.nix b/pkgs/applications/editors/neovim/neovim-remote.nix
index 867e2275128..2b1281ae21b 100644
--- a/pkgs/applications/editors/neovim/neovim-remote.nix
+++ b/pkgs/applications/editors/neovim/neovim-remote.nix
@@ -1,11 +1,14 @@
-{ lib, fetchFromGitHub, pythonPackages }:
+{ lib
+, fetchFromGitHub
+, python3
+, neovim
+}:
 
 with lib;
 
-pythonPackages.buildPythonApplication rec {
+with python3.pkgs; buildPythonApplication rec {
   pname = "neovim-remote";
   version = "2.4.0";
-  disabled = !pythonPackages.isPy3k;
 
   src = fetchFromGitHub {
     owner = "mhinz";
@@ -14,12 +17,24 @@ pythonPackages.buildPythonApplication rec {
     sha256 = "0jlw0qksak4bdzddpsj74pm2f2bgpj3cwrlspdjjy0j9qzg0mpl9";
   };
 
-  propagatedBuildInputs = with pythonPackages; [
+  propagatedBuildInputs = [
     pynvim
     psutil
     setuptools
   ];
 
+  checkInputs = [
+    neovim
+    pytestCheckHook
+  ];
+
+  disabledTests = [
+    # these tests get stuck and never return
+    "test_escape_filenames_properly"
+    "test_escape_single_quotes_in_filenames"
+    "test_escape_double_quotes_in_filenames"
+  ];
+
   meta = {
     description = "A tool that helps controlling nvim processes from a terminal";
     homepage = "https://github.com/mhinz/neovim-remote/";
diff --git a/pkgs/applications/editors/neovim/qt.nix b/pkgs/applications/editors/neovim/qt.nix
index 5210b6b67c8..1da7e7e966e 100644
--- a/pkgs/applications/editors/neovim/qt.nix
+++ b/pkgs/applications/editors/neovim/qt.nix
@@ -1,5 +1,4 @@
-{ lib, stdenv, mkDerivation, fetchFromGitHub, cmake, doxygen, makeWrapper
-, msgpack, neovim, pythonPackages, qtbase, neovim-qt-unwrapped }:
+{ stdenv, makeWrapper, neovim, neovim-qt-unwrapped }:
 
 let
   unwrapped = neovim-qt-unwrapped;
diff --git a/pkgs/applications/editors/neovim/utils.nix b/pkgs/applications/editors/neovim/utils.nix
index d992ccd3f6a..6d04fa6851a 100644
--- a/pkgs/applications/editors/neovim/utils.nix
+++ b/pkgs/applications/editors/neovim/utils.nix
@@ -4,7 +4,6 @@
 , neovim-unwrapped
 , bundlerEnv
 , ruby
-, pythonPackages
 , python3Packages
 , writeText
 , wrapNeovimUnstable
@@ -48,12 +47,6 @@ let
       requiredPlugins = vimUtils.requiredPlugins configure;
       getDeps = attrname: map (plugin: plugin.${attrname} or (_: [ ]));
 
-      pluginPython2Packages = getDeps "pythonDependencies" requiredPlugins;
-      python2Env = pythonPackages.python.withPackages (ps:
-        [ ps.pynvim ]
-        ++ (extraPython2Packages ps)
-        ++ (lib.concatMap (f: f ps) pluginPython2Packages));
-
       pluginPython3Packages = getDeps "python3Dependencies" requiredPlugins;
       python3Env = python3Packages.python.withPackages (ps:
         [ ps.pynvim ]
@@ -69,7 +62,6 @@ let
       # While the latter tells nvim that this provider is not available
       hostprog_check_table = {
         node = withNodeJs;
-        python = withPython2;
         python3 = withPython3;
         ruby = withRuby;
       };
@@ -99,11 +91,12 @@ let
       manifestRc = vimUtils.vimrcContent (configure // { customRC = ""; });
       neovimRcContent = vimUtils.vimrcContent configure;
     in
+    assert withPython2 -> throw "Python2 support has been removed from neovim, please remove withPython2 and extraPython2Packages.";
+
     args // {
       wrapperArgs = makeWrapperArgs;
       inherit neovimRcContent;
       inherit manifestRc;
-      inherit python2Env;
       inherit python3Env;
       inherit withNodeJs;
     } // lib.optionalAttrs withRuby {
@@ -120,7 +113,7 @@ let
   # to keep backwards compatibility
   legacyWrapper = neovim: {
     extraMakeWrapperArgs ? ""
-    , withPython ? true
+    , withPython ? false
     /* the function you would have passed to python.withPackages */
     , extraPythonPackages ? (_: [])
     /* the function you would have passed to python.withPackages */
@@ -138,14 +131,14 @@ let
       else funOrList);
 
       res = makeNeovimConfig {
-        withPython2 = withPython;
-        extraPythonPackages = compatFun extraPythonPackages;
         inherit withPython3;
         extraPython3Packages = compatFun extraPython3Packages;
         inherit withNodeJs withRuby viAlias vimAlias;
         inherit configure;
       };
     in
+    assert withPython -> throw "Python2 support has been removed from neovim, please remove withPython and extraPythonPackages.";
+
     wrapNeovimUnstable neovim (res // {
       wrapperArgs = lib.escapeShellArgs (
         res.wrapperArgs ++ lib.optionals (configure != {}) [
diff --git a/pkgs/applications/editors/neovim/wrapper.nix b/pkgs/applications/editors/neovim/wrapper.nix
index 66127980bf6..db30832d239 100644
--- a/pkgs/applications/editors/neovim/wrapper.nix
+++ b/pkgs/applications/editors/neovim/wrapper.nix
@@ -3,7 +3,6 @@
 , bundlerEnv, ruby
 , nodejs
 , nodePackages
-, pythonPackages
 , python3Packages
 }:
 with lib;
@@ -15,7 +14,7 @@ let
       # should contain all args but the binary
       wrapperArgs ? ""
     , manifestRc ? null
-    , withPython2 ? true, python2Env ? null
+    , withPython2 ? false
     , withPython3 ? true,  python3Env ? null
     , withNodeJs ? false
     , rubyEnv ? null
@@ -35,6 +34,8 @@ let
     [ "${neovim}/bin/nvim" "${placeholder "out"}/bin/nvim" ] ++
       [ "--set" "NVIM_SYSTEM_RPLUGIN_MANIFEST" "${placeholder "out"}/rplugin.vim" ];
   in
+  assert withPython2 -> throw "Python2 support has been removed from the neovim wrapper, please remove withPython2 and python2Env.";
+
   symlinkJoin {
       name = "neovim-${lib.getVersion neovim}";
       # Remove the symlinks created by symlinkJoin which we need to perform
@@ -44,9 +45,6 @@ let
         substitute ${neovim}/share/applications/nvim.desktop $out/share/applications/nvim.desktop \
           --replace 'Name=Neovim' 'Name=WrappedNeovim'
       ''
-      + optionalString withPython2 ''
-        makeWrapper ${python2Env}/bin/python $out/bin/nvim-python --unset PYTHONPATH
-      ''
       + optionalString withPython3 ''
         makeWrapper ${python3Env}/bin/python3 $out/bin/nvim-python3 --unset PYTHONPATH
       ''
diff --git a/pkgs/applications/editors/thonny/default.nix b/pkgs/applications/editors/thonny/default.nix
index 39aefe3fa16..fa71a612fa8 100644
--- a/pkgs/applications/editors/thonny/default.nix
+++ b/pkgs/applications/editors/thonny/default.nix
@@ -4,13 +4,13 @@ with python3.pkgs;
 
 buildPythonApplication rec {
   pname = "thonny";
-  version = "3.3.2";
+  version = "3.3.6";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    sha256 = "1pzy7v48x4ip8v6aqm8hl5ywx7xiqbsfypxxifih8gnlangp1n8y";
+    sha256 = "0ga0pqvq3nglr4jgh8ajv0bv8c7q09h1jh6q6r5cwqa49fawkr02";
   };
 
   propagatedBuildInputs = with python3.pkgs; [
diff --git a/pkgs/applications/editors/vscode/generic.nix b/pkgs/applications/editors/vscode/generic.nix
index 060078cd57b..2d8f639a0c6 100644
--- a/pkgs/applications/editors/vscode/generic.nix
+++ b/pkgs/applications/editors/vscode/generic.nix
@@ -1,7 +1,8 @@
 { stdenv, lib, makeDesktopItem
 , unzip, libsecret, libXScrnSaver, libxshmfence, wrapGAppsHook
 , gtk2, atomEnv, at-spi2-atk, autoPatchelfHook
-, systemd, fontconfig, libdbusmenu
+, systemd, fontconfig, libdbusmenu, buildFHSUserEnvBubblewrap
+, writeShellScriptBin
 
 # Populate passthru.tests
 , tests
@@ -13,13 +14,14 @@
 
 let
   inherit (stdenv.hostPlatform) system;
-in
-  stdenv.mkDerivation {
+  unwrapped = stdenv.mkDerivation {
 
     inherit pname version src sourceRoot;
 
     passthru = {
       inherit executableName tests;
+      fhs = fhs {};
+      fhsWithPackages = f: fhs { additionalPkgs = f; };
     };
 
     desktopItem = makeDesktopItem {
@@ -97,4 +99,64 @@ in
     '';
 
     inherit meta;
-  }
+  };
+
+  # Vscode and variants allow for users to download and use extensions
+  # which often include the usage of pre-built binaries.
+  # This has been an on-going painpoint for many users, as
+  # a full extension update cycle has to be done through nixpkgs
+  # in order to create or update extensions.
+  # See: #83288 #91179 #73810 #41189
+  #
+  # buildFHSUserEnv allows for users to use the existing vscode
+  # extension tooling without significant pain.
+  fhs = { additionalPkgs ? pkgs: [] }: buildFHSUserEnvBubblewrap {
+    # also determines the name of the wrapped command
+    name = executableName;
+
+    # additional libraries which are commonly needed for extensions
+    targetPkgs = pkgs: (with pkgs; [
+      # ld-linux-x86-64-linux.so.2 and others
+      glibc
+
+      # dotnet
+      curl
+      icu
+      libunwind
+      libuuid
+      openssl
+      zlib
+
+      # mono
+      krb5
+    ]) ++ additionalPkgs pkgs;
+
+    # restore desktop item icons
+    extraInstallCommands = ''
+      mkdir -p $out/share/applications
+      for item in ${unwrapped}/share/applications/*.desktop; do
+        ln -s $item $out/share/applications/
+      done
+    '';
+
+    runScript = "${unwrapped}/bin/${executableName}";
+
+    # vscode likes to kill the parent so that the
+    # gui application isn't attached to the terminal session
+    dieWithParent = false;
+
+    passthru = {
+      inherit executableName;
+      inherit (unwrapped) pname version; # for home-manager module
+    };
+
+    meta = meta // {
+      description = ''
+        Wrapped variant of ${pname} which launches in a FHS compatible envrionment.
+        Should allow for easy usage of extensions without nix-specific modifications.
+      '';
+    };
+  };
+in
+  unwrapped
+
diff --git a/pkgs/applications/gis/qmapshack/default.nix b/pkgs/applications/gis/qmapshack/default.nix
index ef036fb71b0..30231e7135a 100644
--- a/pkgs/applications/gis/qmapshack/default.nix
+++ b/pkgs/applications/gis/qmapshack/default.nix
@@ -18,13 +18,13 @@ mkDerivation rec {
 
   cmakeFlags = [
     "-DROUTINO_XML_PATH=${routino}/share/routino"
-    "-DQUAZIP_INCLUDE_DIR=${quazip}/include/quazip5"
-    "-DLIBQUAZIP_LIBRARY=${quazip}/lib/libquazip.so"
   ];
 
   patches = [
     "${src}/FindPROJ4.patch"
-    "${src}/FindQuaZip5.patch"
+
+    # Support QuaZip 1.x.
+    ./pr350-support-quazip-1x.patch
   ];
 
   qtWrapperArgs = [
diff --git a/pkgs/applications/gis/qmapshack/pr350-support-quazip-1x.patch b/pkgs/applications/gis/qmapshack/pr350-support-quazip-1x.patch
new file mode 100644
index 00000000000..82ebed14dbb
--- /dev/null
+++ b/pkgs/applications/gis/qmapshack/pr350-support-quazip-1x.patch
@@ -0,0 +1,141 @@
+From 8fb751c656a14020ba37fb91b7f7cba3c49d8504 Mon Sep 17 00:00:00 2001
+From: kiozen <oliver.eichler@gmx.de>
+Date: Sat, 20 Mar 2021 12:14:29 +0100
+Subject: [PATCH] [QMS-349] Upgrade to Quazip Qt5 V1.x
+
+Simply adjusted the cmake scripts
+---
+ CMakeLists.txt               |  2 +-
+ src/qmapshack/CMakeLists.txt | 27 +++++++++++++--------------
+ 3 files changed, 15 insertions(+), 15 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 8d2cf127..7420d9b2 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -152,7 +152,7 @@ find_package(GDAL                   REQUIRED)
+ find_package(PROJ                   REQUIRED)
+ find_package(JPEG                   REQUIRED)
+ find_package(ROUTINO                REQUIRED)
+-find_package(QuaZip5                REQUIRED)
++find_package(QuaZip-Qt5             REQUIRED)
+ find_package(ALGLIB                         ) # optional as we can use our local version
+ 
+ 
+diff --git a/src/qmapshack/CMakeLists.txt b/src/qmapshack/CMakeLists.txt
+index 08eeb183..9b3836d6 100644
+--- a/src/qmapshack/CMakeLists.txt
++++ b/src/qmapshack/CMakeLists.txt
+@@ -22,8 +22,8 @@ add_definitions(-DROUTINO_XML_PATH=${ROUTINO_XML_PATH})
+ # All source files needed to compile
+ ###############################################################################################
+ 
+-set( SRCS    
+-    CAbout.cpp    
++set( SRCS
++    CAbout.cpp
+     CMainWindow.cpp
+     CSingleInstanceProxy.cpp
+     canvas/CCanvas.cpp
+@@ -160,7 +160,7 @@ set( SRCS
+     gis/trk/CInvalidTrk.cpp
+     gis/trk/CKnownExtension.cpp
+     gis/trk/CListTrkPts.cpp
+-    gis/trk/CPropertyTrk.cpp    
++    gis/trk/CPropertyTrk.cpp
+     gis/trk/CScrOptTrk.cpp
+     gis/trk/CSelectActivityColor.cpp
+     gis/trk/CTableTrk.cpp
+@@ -272,7 +272,7 @@ set( SRCS
+     mouse/line/CLineOpMovePoint.cpp
+     mouse/line/CLineOpSelectRange.cpp
+     mouse/line/CScrOptEditLine.cpp
+-    mouse/line/CScrOptRangeLine.cpp    
++    mouse/line/CScrOptRangeLine.cpp
+     mouse/line/ILineOp.cpp
+     mouse/line/IMouseEditLine.cpp
+     plot/CPlot.cpp
+@@ -401,7 +401,7 @@ set( HDRS
+     gis/CGisListDB.h
+     gis/CGisListWks.h
+     gis/CGisWorkspace.h
+-    gis/CSelDevices.h    
++    gis/CSelDevices.h
+     gis/IGisItem.h
+     gis/IGisLine.h
+     gis/Poi.h
+@@ -512,7 +512,7 @@ set( HDRS
+     gis/trk/CInvalidTrk.h
+     gis/trk/CKnownExtension.h
+     gis/trk/CListTrkPts.h
+-    gis/trk/CPropertyTrk.h    
++    gis/trk/CPropertyTrk.h
+     gis/trk/CScrOptTrk.h
+     gis/trk/CSelectActivityColor.h
+     gis/trk/CTableTrk.h
+@@ -579,7 +579,7 @@ set( HDRS
+     map/CMapList.h
+     map/CMapMAP.h
+     map/CMapPathSetup.h
+-    map/CMapPropSetup.h    
++    map/CMapPropSetup.h
+     map/CMapRMAP.h
+     map/CMapTMS.h
+     map/CMapVRT.h
+@@ -655,7 +655,7 @@ set( HDRS
+     realtime/CRtSelectSource.h
+     realtime/CRtWorkspace.h
+     realtime/IRtInfo.h
+-    realtime/IRtRecord.h    
++    realtime/IRtRecord.h
+     realtime/IRtSource.h
+     realtime/gpstether/CRtGpsTether.h
+     realtime/gpstether/CRtGpsTetherInfo.h
+@@ -764,7 +764,7 @@ set( UIS
+     gis/search/IGeoSearchWebConfigDialog.ui
+     gis/search/ISearchExplanationDialog.ui
+     gis/summary/IGisSummary.ui
+-    gis/summary/IGisSummarySetup.ui    
++    gis/summary/IGisSummarySetup.ui
+     gis/trk/ICombineTrk.ui
+     gis/trk/ICutTrk.ui
+     gis/trk/IDetailsTrk.ui
+@@ -818,7 +818,7 @@ set( UIS
+     mouse/range/IActionSelect.ui
+     mouse/range/IRangeToolSetup.ui
+     mouse/range/IScrOptRangeTool.ui
+-    mouse/range/IScrOptRangeTrk.ui    
++    mouse/range/IScrOptRangeTrk.ui
+     mouse/IScrOptRuler.ui
+     mouse/IScrOptSelect.ui
+     mouse/line/IScrOptEditLine.ui
+@@ -899,7 +899,6 @@ include_directories(
+     ${PROJ_INCLUDE_DIRS}
+     ${ROUTINO_INCLUDE_DIRS}
+     ${ALGLIB_INCLUDE_DIRS}
+-    ${QUAZIP_INCLUDE_DIRS}
+ )
+ 
+ if(APPLE)
+@@ -934,10 +933,10 @@ endif(Qt5DBus_FOUND)
+ 
+ target_link_libraries(${APPLICATION_NAME}
+     Qt5::Widgets
+-    Qt5::Xml    
++    Qt5::Xml
+     Qt5::Sql
+     Qt5::PrintSupport
+-    Qt5::UiTools    
++    Qt5::UiTools
+     Qt5::Network
+     Qt5::WebEngineWidgets
+     Qt5::Qml
+@@ -947,7 +946,7 @@ target_link_libraries(${APPLICATION_NAME}
+     ${PROJ_LIBRARIES}
+     ${ROUTINO_LIBRARIES}
+     ${ALGLIB_LIBRARIES}
+-    ${QUAZIP_LIBRARIES}
++    QuaZip::QuaZip
+ )
+ 
+ if(APPLE)
diff --git a/pkgs/applications/graphics/foxotron/default.nix b/pkgs/applications/graphics/foxotron/default.nix
index 71adfe0d2db..d8862525030 100644
--- a/pkgs/applications/graphics/foxotron/default.nix
+++ b/pkgs/applications/graphics/foxotron/default.nix
@@ -25,14 +25,14 @@
 
 stdenv.mkDerivation rec {
   pname = "foxotron";
-  version = "2021-03-12";
+  version = "2021-04-19";
 
   src = fetchFromGitHub {
     owner = "Gargaj";
     repo = "Foxotron";
     rev = version;
     fetchSubmodules = true;
-    sha256 = "1finvbs3pbfyvm525blwgwl5jci2zjxb1923i0cm8rmf7wasaapb";
+    sha256 = "sha256-YTCnWHXBNqvJmhRqRQRFCVvBcqbjKzcc3AKVXS0jvno=";
   };
 
   nativeBuildInputs = [ cmake pkg-config makeWrapper ];
@@ -67,7 +67,7 @@ stdenv.mkDerivation rec {
       Revision 2021 3D Graphics Competition.
     '';
     homepage = "https://github.com/Gargaj/Foxotron";
-    license = licenses.publicDomain;
+    license = licenses.unlicense;
     maintainers = with maintainers; [ OPNA2608 ];
     platforms = platforms.all;
   };
diff --git a/pkgs/applications/graphics/nomacs/default.nix b/pkgs/applications/graphics/nomacs/default.nix
index bd6d732ac68..142c76b2f6d 100644
--- a/pkgs/applications/graphics/nomacs/default.nix
+++ b/pkgs/applications/graphics/nomacs/default.nix
@@ -27,6 +27,15 @@ mkDerivation rec {
     sha256 = "1bq7bv4p7w67172y893lvpk90d6fgdpnylynbj2kn8m2hs6khya4";
   };
 
+  patches = [
+    # Add support for Quazip 1.x.
+    (fetchpatch {
+      url = "https://github.com/nomacs/nomacs/pull/576.patch";
+      sha256 = "11ryjvd9jbb0cqagai4a6980jfq8lrcbyw2d7z9yld1f42w9kbxm";
+      stripLen = 1;
+    })
+  ];
+
   setSourceRoot = ''
     sourceRoot=$(echo */ImageLounge)
   '';
diff --git a/pkgs/applications/graphics/openboard/default.nix b/pkgs/applications/graphics/openboard/default.nix
index 859c2219218..ca51d74a0a1 100644
--- a/pkgs/applications/graphics/openboard/default.nix
+++ b/pkgs/applications/graphics/openboard/default.nix
@@ -34,7 +34,8 @@ in mkDerivation rec {
 
   postPatch = ''
     substituteInPlace OpenBoard.pro \
-      --replace '/usr/include/quazip' '${quazip}/include/quazip5' \
+      --replace '/usr/include/quazip' '${quazip}/include/QuaZip-Qt5-${quazip.version}/quazip' \
+      --replace '-lquazip5' '-lquazip1-qt5' \
       --replace '/usr/include/poppler' '${poppler.dev}/include/poppler'
   '';
 
diff --git a/pkgs/applications/misc/authenticator/default.nix b/pkgs/applications/misc/authenticator/default.nix
new file mode 100644
index 00000000000..46b61720d0a
--- /dev/null
+++ b/pkgs/applications/misc/authenticator/default.nix
@@ -0,0 +1,99 @@
+{ lib
+, stdenv
+, fetchFromGitLab
+, fetchpatch
+, appstream-glib
+, desktop-file-utils
+, meson
+, ninja
+, pkg-config
+, python3
+, rustPlatform
+, wrapGAppsHook
+, gdk-pixbuf
+, glib
+, gst_all_1
+, gtk4
+, libadwaita
+, openssl
+, sqlite
+, wayland
+, zbar
+}:
+
+stdenv.mkDerivation rec {
+  pname = "authenticator";
+  version = "4.0.3";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "World";
+    repo = "Authenticator";
+    rev = version;
+    sha256 = "0fvs76f3fm5pxn7wg6sjbqpgip5w2j7xrh4siasdcl2bx6vsld8b";
+  };
+
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    inherit src;
+    name = "${pname}-${version}";
+    sha256 = "1s97jyszxf24rs3ni11phiyvmp1wm8sicb0rh1jgwz4bn1cnakx4";
+  };
+
+  postPatch = ''
+    patchShebangs build-aux
+  '';
+
+  nativeBuildInputs = [
+    appstream-glib
+    desktop-file-utils
+    meson
+    ninja
+    pkg-config
+    python3
+    wrapGAppsHook
+  ] ++ (with rustPlatform; [
+    cargoSetupHook
+    rust.cargo
+    rust.rustc
+  ]);
+
+  buildInputs = [
+    gdk-pixbuf
+    glib
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base
+
+    # gst-plugins-good needs gtk4 support:
+    # https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/767
+    # We copy the way it is built from the Flatpak:
+    # https://gitlab.gnome.org/World/Authenticator/-/blob/master/build-aux/com.belmoussaoui.Authenticator.Devel.json
+    (gst_all_1.gst-plugins-good.overrideAttrs (old: {
+      patches = old.patches or [ ] ++ [
+        "${src}/build-aux/767.patch"
+      ];
+      mesonFlags = old.mesonFlags ++ [
+        "-Dgtk3=disabled"
+        "-Dgtk4=enabled"
+        "-Dgtk4-experiments=true"
+      ];
+      buildInputs = old.buildInputs ++ [
+        gtk4
+      ];
+    }))
+
+    (gst_all_1.gst-plugins-bad.override { enableZbar = true; })
+    gtk4
+    libadwaita
+    openssl
+    sqlite
+    wayland
+    zbar
+  ];
+
+  meta = with lib; {
+    description = "Two-factor authentication code generator for GNOME";
+    homepage = "https://gitlab.gnome.org/World/Authenticator";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/applications/misc/dbeaver/default.nix b/pkgs/applications/misc/dbeaver/default.nix
index fa5240b5333..234ed7410f9 100644
--- a/pkgs/applications/misc/dbeaver/default.nix
+++ b/pkgs/applications/misc/dbeaver/default.nix
@@ -2,7 +2,6 @@
 , stdenv
 , copyDesktopItems
 , fetchFromGitHub
-, fetchpatch
 , makeDesktopItem
 , makeWrapper
 , fontconfig
@@ -19,18 +18,18 @@
 
 stdenv.mkDerivation rec {
   pname = "dbeaver-ce";
-  version = "21.0.3"; # When updating also update fetchedMavenDeps.sha256
+  version = "21.0.4"; # When updating also update fetchedMavenDeps.sha256
 
   src = fetchFromGitHub {
     owner = "dbeaver";
     repo = "dbeaver";
     rev = version;
-    sha256 = "sha256-ItM8t+gqE0ccuuimfEMUddykl+xt2eZIBd3MbpreRwA=";
+    sha256 = "sha256-jV7Pe4MsLQnIrkDnlI2SrPzSjiDHM59GbMy4G7oeQK8=";
   };
 
   fetchedMavenDeps = stdenv.mkDerivation {
     name = "dbeaver-${version}-maven-deps";
-    inherit src patches;
+    inherit src;
 
     buildInputs = [
       maven
@@ -51,18 +50,9 @@ stdenv.mkDerivation rec {
     dontFixup = true;
     outputHashAlgo = "sha256";
     outputHashMode = "recursive";
-    outputHash = "sha256-rsK/B39ogNu5nC41OfyAsLiwBz4gWyH+8Fj7E6+rOng=";
+    outputHash = "sha256-RspJTWVM0ZpAz4yDeKsG7wSHZ//bi3SSV5c0gbsqZKY=";
   };
 
-  patches = [
-    # Fix eclipse-color-theme URL (https://github.com/dbeaver/dbeaver/pull/12133)
-    # After April 15, 2021 eclipse-color-theme.github.com no longer redirects to eclipse-color-theme.github.io
-    (fetchpatch {
-      url = "https://github.com/dbeaver/dbeaver/commit/65d65e2c2c711cc87fddcec425a6915aa80f4ced.patch";
-      sha256 = "sha256-pxOcRYkV/5o+tHcRhHDZ1TmZSHMnKBmkNTVAlIf9nUE=";
-    })
-  ];
-
   nativeBuildInputs = [
     copyDesktopItems
     makeWrapper
diff --git a/pkgs/applications/misc/googleearth-pro/default.nix b/pkgs/applications/misc/googleearth-pro/default.nix
index e5192c9a73e..e7cfe04da6e 100644
--- a/pkgs/applications/misc/googleearth-pro/default.nix
+++ b/pkgs/applications/misc/googleearth-pro/default.nix
@@ -1,41 +1,54 @@
-{ lib, stdenv, fetchurl, glibc, libGLU, libGL, freetype, glib, libSM, libICE, libXi, libXv
-, libXrender, libXrandr, libXfixes, libXcursor, libXinerama, libXext, libX11, libXcomposite
-, libxcb, sqlite, zlib, fontconfig, dpkg, libproxy, libxml2, gst_all_1, dbus, makeWrapper }:
-
+{ lib
+, stdenv
+, mkDerivation
+, fetchurl
+, ffmpeg_3
+, freetype
+, gdal_2
+, glib
+, libGL
+, libGLU
+, libICE
+, libSM
+, libXi
+, libXv
+, libav_12
+
+, libXrender
+, libXrandr
+, libXfixes
+, libXcursor
+, libXinerama
+, libXext
+, libX11
+, libXcomposite
+
+, libxcb
+, sqlite
+, zlib
+, fontconfig
+, dpkg
+, libproxy
+, libxml2
+, gst_all_1
+, dbus
+, makeWrapper
+
+, qtlocation
+, qtwebkit
+, qtx11extras
+, qtsensors
+, qtscript
+
+, xkeyboardconfig
+, autoPatchelfHook
+}:
 let
   arch =
     if stdenv.hostPlatform.system == "x86_64-linux" then "amd64"
     else throw "Unsupported system ${stdenv.hostPlatform.system} ";
-  fullPath = lib.makeLibraryPath [
-    glibc
-    glib
-    stdenv.cc.cc
-    libSM
-    libICE
-    libXi
-    libXv
-    libGLU libGL
-    libXrender
-    libXrandr
-    libXfixes
-    libXcursor
-    libXinerama
-    libXcomposite
-    freetype
-    libXext
-    libX11
-    libxcb
-    sqlite
-    zlib
-    fontconfig
-    libproxy
-    libxml2
-    dbus
-    gst_all_1.gstreamer
-    gst_all_1.gst-plugins-base
-  ];
 in
-stdenv.mkDerivation rec {
+mkDerivation rec {
   pname = "googleearth-pro";
   version = "7.3.3.7786";
 
@@ -44,20 +57,56 @@ stdenv.mkDerivation rec {
     sha256 = "1s3cakwrgf702g33rh8qs657d8bl68wgg8k89rksgvswwpd2zbb3";
   };
 
-  nativeBuildInputs = [ dpkg makeWrapper ];
+  nativeBuildInputs = [ dpkg makeWrapper autoPatchelfHook ];
+  propagatedBuildInputs = [ xkeyboardconfig ];
+  buildInputs = [
+    dbus
+    ffmpeg_3
+    fontconfig
+    freetype
+    gdal_2
+    glib
+    gst_all_1.gst-plugins-base
+    gst_all_1.gstreamer
+    libGL
+    libGLU
+    libICE
+    libSM
+    libX11
+    libXcomposite
+    libXcursor
+    libXext
+    libXfixes
+    libXi
+    libXinerama
+    libXrandr
+    libXrender
+    libXv
+    libav_12
+    libproxy
+    libxcb
+    libxml2
+    qtlocation
+    qtscript
+    qtsensors
+    qtwebkit
+    qtx11extras
+    sqlite
+    zlib
+  ];
 
   doInstallCheck = true;
 
   dontBuild = true;
 
-  dontPatchELF = true;
-
   unpackPhase = ''
     # deb file contains a setuid binary, so 'dpkg -x' doesn't work here
     dpkg --fsys-tarfile ${src} | tar --extract
   '';
 
   installPhase =''
+    runHook preInstall
+
     mkdir $out
     mv usr/* $out/
     rmdir usr
@@ -66,20 +115,9 @@ stdenv.mkDerivation rec {
 
     # patch and link googleearth binary
     ln -s $out/opt/google/earth/pro/googleearth-bin $out/bin/googleearth-pro
-    patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
-      --set-rpath "${fullPath}:\$ORIGIN" \
-      $out/opt/google/earth/pro/googleearth-bin
 
     # patch and link gpsbabel binary
     ln -s $out/opt/google/earth/pro/gpsbabel $out/bin/gpsbabel
-    patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
-      --set-rpath "${fullPath}:\$ORIGIN" \
-      $out/opt/google/earth/pro/gpsbabel
-
-    # patch libraries
-    for a in $out/opt/google/earth/pro/*.so* ; do
-      patchelf --set-rpath "${fullPath}:\$ORIGIN" $a
-    done
 
     # Add desktop config file and icons
     mkdir -p $out/share/{applications,icons/hicolor/{16x16,22x22,24x24,32x32,48x48,64x64,128x128,256x256}/apps,pixmaps}
@@ -89,23 +127,37 @@ stdenv.mkDerivation rec {
       ln -s $out/opt/google/earth/pro/product_logo_"$size".png $out/share/icons/hicolor/"$size"x"$size"/apps/google-earth-pro.png
     done
     ln -s $out/opt/google/earth/pro/product_logo_256.png $out/share/pixmaps/google-earth-pro.png
+
+    runHook postInstall
   '';
 
+  postInstall = ''
+    find "$out/opt/google/earth/pro" -name "*.so.*" | \
+      egrep -v 'libssl*|libcrypto*|libicu*' | \
+      xargs rm
+    find "$out/opt/google/earth/pro" -name "*.so" | \
+      egrep -v 'libgoogle*|libauth*|libbase*|libcommon*|libcommon_gui*|libcommon_platform*|libcommon_webbrowser*|libcomponentframework*|libgeobase*|libgeobaseutils*|libge_net*|libgdata*|libgoogleapi*|libmath*|libmoduleframework*|libmaps*|libport*|libprintmodule*|libprofile*|librender*|libreporting*|libsgutil*|libspatial*|libxsltransform*|libbase*|libport*|libport*|libbase*|libcomponentframework*|libIGCore*|libIGUtils*|libaction*|libapiloader*|libapiloader*|libIGCore*|libIGUtils*|libIGMath*|libfusioncommon*|libge_exif*|libaction*|libfusioncommon*|libapiloader*|liblayer*|libapiloader*|libIGAttrs*|libIGCore*|libIGGfx*|libIGMath*|libIGSg*|libIGUtils*|libwmsbase*|libwebbrowser*|libevllpro*|libalchemyext*|libge_cache*|libflightsim*|libnpgeinprocessplugin*|libmeasure*|libviewsync*|libcapture*|libtheme*|libgps*|libgisingest*|libsearchmodule*|libinput_plugin*|libnavigate*|libspnav*|libsearch*|libLeap*' | \
+      xargs rm
+  '';
+
+  autoPatchelfIgnoreMissingDeps=true;
+
   installCheckPhase = ''
     $out/bin/gpsbabel -V > /dev/null
   '';
 
   # wayland is not supported by Qt included in binary package, so make sure it uses xcb
-  fixupPhase = ''
-    wrapProgram $out/bin/googleearth-pro --set QT_QPA_PLATFORM xcb
+  postFixup = ''
+    wrapProgram $out/bin/googleearth-pro \
+      --set QT_QPA_PLATFORM xcb \
+      --set QT_XKB_CONFIG_ROOT "${xkeyboardconfig}/share/X11/xkb"
   '';
 
-
   meta = with lib; {
     description = "A world sphere viewer";
-    homepage = "https://earth.google.com";
+    homepage = "https://www.google.com/earth/";
     license = licenses.unfree;
-    maintainers = with maintainers; [ friedelino ];
+    maintainers = with maintainers; [ friedelino shamilton ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/misc/ideamaker/default.nix b/pkgs/applications/misc/ideamaker/default.nix
index 7b2eeec292b..1996ba5c1ea 100644
--- a/pkgs/applications/misc/ideamaker/default.nix
+++ b/pkgs/applications/misc/ideamaker/default.nix
@@ -9,7 +9,7 @@
 , libcork
 , makeDesktopItem
 , qt5
-, quazip_qt4
+, quazip
 , zlib
 }:
 stdenv.mkDerivation rec {
@@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
     libcork
     qt5.qtbase
     qt5.qtserialport
-    quazip_qt4
+    quazip
     zlib
   ];
 
@@ -73,5 +73,6 @@ stdenv.mkDerivation rec {
     license = licenses.unfree;
     platforms = [ "x86_64-linux" ];
     maintainers = with maintainers; [ lovesegfault ];
+    broken = true;  # Segfaults on startup.
   };
 }
diff --git a/pkgs/applications/misc/mako/default.nix b/pkgs/applications/misc/mako/default.nix
index a845a767b2a..f28292cb2f1 100644
--- a/pkgs/applications/misc/mako/default.nix
+++ b/pkgs/applications/misc/mako/default.nix
@@ -5,19 +5,22 @@
 
 stdenv.mkDerivation rec {
   pname = "mako";
-  version = "1.4.1";
+  version = "1.5";
 
   src = fetchFromGitHub {
     owner = "emersion";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0hwvibpnrximb628w9dsfjpi30b5jy7nfkm4d94z5vhp78p43vxh";
+    sha256 = "0f92krcgybl4113g2gawf7lcbh1fss7bq4cx81h1zyn7yvxlwx2b";
   };
 
   nativeBuildInputs = [ meson ninja pkg-config scdoc wayland-protocols wrapGAppsHook ];
   buildInputs = [ systemd pango cairo gdk-pixbuf wayland ];
 
-  mesonFlags = [ "-Dzsh-completions=true" ];
+  mesonFlags = [
+    "-Dzsh-completions=true"
+    "-Dsd-bus-provider=libsystemd"
+  ];
 
   meta = with lib; {
     description = "A lightweight Wayland notification daemon";
diff --git a/pkgs/applications/misc/metadata-cleaner/default.nix b/pkgs/applications/misc/metadata-cleaner/default.nix
index b1b77a53ea0..6807e056152 100644
--- a/pkgs/applications/misc/metadata-cleaner/default.nix
+++ b/pkgs/applications/misc/metadata-cleaner/default.nix
@@ -17,7 +17,7 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "metadata-cleaner";
-  version = "1.0.4";
+  version = "1.0.5";
 
   format = "other";
 
@@ -25,7 +25,7 @@ python3.pkgs.buildPythonApplication rec {
     owner = "rmnvgr";
     repo = "metadata-cleaner";
     rev = "v${version}";
-    sha256 = "sha256-F/xh4dFX7W50kFzpWpGKyMUhxOlDO3WDXBzXVsDViY8=";
+    sha256 = "sha256-9s9i703Svql1Nn1M1sFp3FOtLGjuxXi6YR6nsUJCkeg=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/misc/xplr/default.nix b/pkgs/applications/misc/xplr/default.nix
index 14a50dbeb9e..bcb5beff287 100644
--- a/pkgs/applications/misc/xplr/default.nix
+++ b/pkgs/applications/misc/xplr/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   name = "xplr";
-  version = "0.5.10";
+  version = "0.5.12";
 
   src = fetchFromGitHub {
     owner = "sayanarijit";
     repo = name;
     rev = "v${version}";
-    sha256 = "1gy0iv39arq2ri57iqsycp1sfnn1yafnhblr7p1my2wnmqwmd4qw";
+    sha256 = "0dmqa56sxyvrq03rpf9yczp75zk44s79ilz6kbykdghp0d9lyldf";
   };
 
-  cargoSha256 = "01b4dlbakkdn3pfyyphabzrmqyp7fjy6n1nfk38z3zap5zvx8ipl";
+  cargoSha256 = "1mb1rfax91cbi2wvshl8jsfykx9kfwff8fkqa7rc4plqxnz0qxkx";
 
   meta = with lib; {
     description = "A hackable, minimal, fast TUI file explorer";
diff --git a/pkgs/applications/networking/browsers/chromium/browser.nix b/pkgs/applications/networking/browsers/chromium/browser.nix
index c4a5508b753..dcac873b849 100644
--- a/pkgs/applications/networking/browsers/chromium/browser.nix
+++ b/pkgs/applications/networking/browsers/chromium/browser.nix
@@ -85,6 +85,7 @@ mkChromiumDerivation (base: rec {
       else [ primeos thefloweringash bendlas ];
     license = if enableWideVine then licenses.unfree else licenses.bsd3;
     platforms = platforms.linux;
+    mainProgram = "chromium";
     hydraPlatforms = if (channel == "stable" || channel == "ungoogled-chromium")
       then ["aarch64-linux" "x86_64-linux"]
       else [];
diff --git a/pkgs/applications/networking/browsers/firefox-bin/default.nix b/pkgs/applications/networking/browsers/firefox-bin/default.nix
index 93b89e9031e..ffba1096d1d 100644
--- a/pkgs/applications/networking/browsers/firefox-bin/default.nix
+++ b/pkgs/applications/networking/browsers/firefox-bin/default.nix
@@ -33,6 +33,7 @@
 , nspr
 , nss
 , pango
+, pipewire
 , pciutils
 , libheimdal
 , libpulseaudio
@@ -126,6 +127,7 @@ stdenv.mkDerivation {
       nspr
       nss
       pango
+      pipewire
       pciutils
       libheimdal
       libpulseaudio
diff --git a/pkgs/applications/networking/browsers/vivaldi/default.nix b/pkgs/applications/networking/browsers/vivaldi/default.nix
index 96355789eb3..2ff0d2d5df0 100644
--- a/pkgs/applications/networking/browsers/vivaldi/default.nix
+++ b/pkgs/applications/networking/browsers/vivaldi/default.nix
@@ -18,11 +18,11 @@ let
   vivaldiName = if isSnapshot then "vivaldi-snapshot" else "vivaldi";
 in stdenv.mkDerivation rec {
   pname = "vivaldi";
-  version = "3.7.2218.45-1";
+  version = "3.8.2259.37-1";
 
   src = fetchurl {
     url = "https://downloads.vivaldi.com/${branch}/vivaldi-${branch}_${version}_amd64.deb";
-    sha256 = "11q3whw01nbwvzccgn55b4lkr7dzlql961406r6by8xqvf8zgmp4";
+    sha256 = "1lpia3jm6l2yvbhrw5khws28n653w22bszzd44y6zv6zwbw7y127";
   };
 
   unpackPhase = ''
@@ -47,6 +47,7 @@ in stdenv.mkDerivation rec {
     + ":$out/opt/${vivaldiName}/lib";
 
   buildPhase = ''
+    runHook preBuild
     echo "Patching Vivaldi binaries"
     patchelf \
       --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
@@ -56,12 +57,14 @@ in stdenv.mkDerivation rec {
     ln -s ${vivaldi-ffmpeg-codecs}/lib/libffmpeg.so opt/${vivaldiName}/libffmpeg.so.''${version%\.*\.*}
   '' + ''
     echo "Finished patching Vivaldi binaries"
+    runHook postBuild
   '';
 
   dontPatchELF = true;
   dontStrip    = true;
 
   installPhase = ''
+    runHook preInstall
     mkdir -p "$out"
     cp -r opt "$out"
     mkdir "$out/bin"
@@ -84,6 +87,8 @@ in stdenv.mkDerivation rec {
       ${lib.optionalString enableWidevine "--suffix LD_LIBRARY_PATH : ${libPath}"}
   '' + lib.optionalString enableWidevine ''
     ln -sf ${vivaldi-widevine}/share/google/chrome/WidevineCdm $out/opt/${vivaldiName}/WidevineCdm
+  '' + ''
+    runHook postInstall
   '';
 
   meta = with lib; {
diff --git a/pkgs/applications/networking/cluster/kubelogin-oidc/default.nix b/pkgs/applications/networking/cluster/kubelogin-oidc/default.nix
index 7cbe5558533..a51230d5ff4 100644
--- a/pkgs/applications/networking/cluster/kubelogin-oidc/default.nix
+++ b/pkgs/applications/networking/cluster/kubelogin-oidc/default.nix
@@ -2,18 +2,18 @@
 
 buildGoModule rec {
   pname = "kubelogin";
-  version = "1.23.0";
+  version = "1.23.1";
 
   src = fetchFromGitHub {
     owner = "int128";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0n94nx17c6ln2nd6d9yr93vc251y1xphq1wj2vzs4j2l8dqfyjpn";
+    sha256 = "sha256-YK/QGx6QzSeyeZ61KgdYO3POJQFK1F6yJayd2gcRWS4=";
   };
 
   subPackages = ["."];
 
-  vendorSha256 = "1dvrk6z6k66wawgb50n8hbgdd8fly399mlbgnvxi671vfi7lkz09";
+  vendorSha256 = "sha256-tnjgs8Ziqdo1ciVOWtL0D8puv2SZGqSHgo2SV7N8F0M=";
 
   # Rename the binary instead of symlinking to avoid conflict with the
   # Azure version of kubelogin
diff --git a/pkgs/applications/networking/cluster/tektoncd-cli/default.nix b/pkgs/applications/networking/cluster/tektoncd-cli/default.nix
index 9ab5b94251b..979216b3ccd 100644
--- a/pkgs/applications/networking/cluster/tektoncd-cli/default.nix
+++ b/pkgs/applications/networking/cluster/tektoncd-cli/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "tektoncd-cli";
-  version = "0.17.2";
+  version = "0.18.0";
 
   src = fetchFromGitHub {
     owner = "tektoncd";
     repo = "cli";
     rev = "v${version}";
-    sha256 = "sha256-7VG9OFt1yVt4st8EM1aiRqLCHwjSqib28GoamoJHHnM=";
+    sha256 = "sha256-vZxpfVMUl1EZwCuLlwmSKWrz86aTjWYlAIwO4b9ACqk=";
   };
 
   vendorSha256 = null;
@@ -24,6 +24,8 @@ buildGoModule rec {
   excludedPackages = "\\(third_party\\|cmd/docs\\)";
 
   preCheck = ''
+    # Some tests try to write to the home dir
+    export HOME="$TMPDIR"
     # Change the golden files to match our desired version
     sed -i "s/dev/${version}/" pkg/cmd/version/testdata/TestGetVersions-*.golden
   '';
diff --git a/pkgs/applications/networking/flexget/default.nix b/pkgs/applications/networking/flexget/default.nix
index 3f2e3490955..592c5282cd1 100644
--- a/pkgs/applications/networking/flexget/default.nix
+++ b/pkgs/applications/networking/flexget/default.nix
@@ -2,11 +2,11 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "FlexGet";
-  version = "3.1.110";
+  version = "3.1.116";
 
   src = python3Packages.fetchPypi {
     inherit pname version;
-    sha256 = "e8642dcbbfe941e2d2def7bf2e28889082a78c1d041edb33dae180036832a96b";
+    sha256 = "6372b36495ae023bd64ce28ca649feba54b060ed8f0a5f606a4845974e834493";
   };
 
   postPatch = ''
@@ -54,6 +54,7 @@ python3Packages.buildPythonApplication rec {
     sqlalchemy
     terminaltables
     zxcvbn
+    psutil
     # plugins
     transmission-rpc
   ];
diff --git a/pkgs/applications/networking/instant-messengers/slack/default.nix b/pkgs/applications/networking/instant-messengers/slack/default.nix
index 1775e45d4e6..6269e5c3a97 100644
--- a/pkgs/applications/networking/instant-messengers/slack/default.nix
+++ b/pkgs/applications/networking/instant-messengers/slack/default.nix
@@ -42,11 +42,11 @@ let
 
   pname = "slack";
 
-  x86_64-darwin-version = "4.14.0";
-  x86_64-darwin-sha256 = "0kpjsnriav6rcddjkz0z9arxjd09i6bw2krnmf3dc31my64nmxs6";
+  x86_64-darwin-version = "4.15.0";
+  x86_64-darwin-sha256 = "12mfha0f7nciszsv7fb0zk4y10p63mh7kaw8gbk3q2fmyp8aij6l";
 
-  x86_64-linux-version = "4.14.0";
-  x86_64-linux-sha256 = "0xy9i8ssjba62ca7lfan58rhwx69wkapfd0jzkaj95qhqnv019fg";
+  x86_64-linux-version = "4.15.0";
+  x86_64-linux-sha256 = "1xzp7ql4i3n3fqfwk0400hkg4xn0pi66sy5jzqn68z33zzf7raii";
 
   version = {
     x86_64-darwin = x86_64-darwin-version;
diff --git a/pkgs/applications/networking/instant-messengers/teamspeak/client.nix b/pkgs/applications/networking/instant-messengers/teamspeak/client.nix
index 98867407916..d2648eff57c 100644
--- a/pkgs/applications/networking/instant-messengers/teamspeak/client.nix
+++ b/pkgs/applications/networking/instant-messengers/teamspeak/client.nix
@@ -60,7 +60,7 @@ stdenv.mkDerivation rec {
     ''
       mv ts3client_linux_${arch} ts3client
       echo "patching ts3client..."
-      patchelf --replace-needed libquazip.so ${quazip}/lib/libquazip5.so ts3client
+      patchelf --replace-needed libquazip.so ${quazip}/lib/libquazip1-qt5.so ts3client
       patchelf \
         --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
         --set-rpath ${lib.makeLibraryPath deps}:$(cat $NIX_CC/nix-support/orig-cc)/${libDir} \
diff --git a/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix b/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix
index 2f6594c1765..c88c97705fd 100644
--- a/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix
+++ b/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix
@@ -2,7 +2,7 @@
 , pkg-config, cmake, ninja, python3, wrapGAppsHook, wrapQtAppsHook
 , qtbase, qtimageformats, gtk3, libsForQt5, lz4, xxHash
 , ffmpeg, openalSoft, minizip, libopus, alsaLib, libpulseaudio, range-v3
-, tl-expected, hunspell, glibmm
+, tl-expected, hunspell, glibmm, webkitgtk
 # Transitive dependencies:
 , pcre, xorg, util-linux, libselinux, libsepol, epoxy
 , at-spi2-core, libXtst, libthai, libdatrie
@@ -14,13 +14,13 @@ let
   tg_owt = callPackage ../tdesktop/tg_owt.nix {};
 in mkDerivation rec {
   pname = "kotatogram-desktop";
-  version = "1.4";
+  version = "1.4.1";
 
   src = fetchFromGitHub {
     owner = "kotatogram";
     repo = "kotatogram-desktop";
     rev = "k${version}";
-    sha256 = "0nhyjqxrbqiik4sgzplmpgx8msf8rykjiik0c2zr61rjm4fngkb3";
+    sha256 = "07z56gz3sk45n5j0gw9p9mxrbwixxsmp7lvqc6lqnxmglz6knc1d";
     fetchSubmodules = true;
   };
 
@@ -38,7 +38,7 @@ in mkDerivation rec {
   buildInputs = [
     qtbase qtimageformats gtk3 libsForQt5.kwayland libsForQt5.libdbusmenu lz4 xxHash
     ffmpeg openalSoft minizip libopus alsaLib libpulseaudio range-v3
-    tl-expected hunspell glibmm
+    tl-expected hunspell glibmm webkitgtk
     tg_owt
     # Transitive dependencies:
     pcre xorg.libXdmcp util-linux libselinux libsepol epoxy
diff --git a/pkgs/applications/networking/instant-messengers/zoom-us/default.nix b/pkgs/applications/networking/instant-messengers/zoom-us/default.nix
index fd15e77c8be..44bbbeece30 100644
--- a/pkgs/applications/networking/instant-messengers/zoom-us/default.nix
+++ b/pkgs/applications/networking/instant-messengers/zoom-us/default.nix
@@ -29,11 +29,11 @@
 assert pulseaudioSupport -> libpulseaudio != null;
 
 let
-  version = "5.6.16775.0418";
+  version = "5.6.16888.0424";
   srcs = {
     x86_64-linux = fetchurl {
       url = "https://zoom.us/client/${version}/zoom_x86_64.pkg.tar.xz";
-      sha256 = "twtxzniojgyLTx6Kda8Ej96uyw2JQB/jIhLdTgTqpCo=";
+      sha256 = "H/G9cSVmxYM0AVfrdpXzm7ohssDbKq2xdvIBc4d+elc=";
     };
   };
 
@@ -79,7 +79,7 @@ in stdenv.mkDerivation rec {
   installPhase = ''
     runHook preInstall
     mkdir $out
-    tar -C $out -xf ${src}
+    tar -C $out -xf $src
     mv $out/usr/* $out/
     runHook postInstall
   '';
diff --git a/pkgs/applications/networking/pcloud/default.nix b/pkgs/applications/networking/pcloud/default.nix
index 64721cd75a6..6cff01c1cc2 100644
--- a/pkgs/applications/networking/pcloud/default.nix
+++ b/pkgs/applications/networking/pcloud/default.nix
@@ -21,7 +21,7 @@
   # Runtime dependencies;
   # A few additional ones (e.g. Node) are already shipped together with the
   # AppImage, so we don't have to duplicate them here.
-  alsaLib, dbus-glib, fuse, gnome3, gtk3, libdbusmenu-gtk2, udev, nss
+  alsaLib, dbus-glib, fuse, gnome3, gtk3, libdbusmenu-gtk2, libXdamage, udev, nss
 }:
 
 let
@@ -59,6 +59,7 @@ in stdenv.mkDerivation {
     fuse
     gtk3
     libdbusmenu-gtk2
+    libXdamage
     nss
     udev
   ];
diff --git a/pkgs/applications/networking/remote/citrix-workspace/generic.nix b/pkgs/applications/networking/remote/citrix-workspace/generic.nix
index 35faeb20b75..8b1ef3c5863 100644
--- a/pkgs/applications/networking/remote/citrix-workspace/generic.nix
+++ b/pkgs/applications/networking/remote/citrix-workspace/generic.nix
@@ -1,7 +1,7 @@
 { lib, stdenv, requireFile, makeWrapper, autoPatchelfHook, wrapGAppsHook, which, more
 , file, atk, alsaLib, cairo, fontconfig, gdk-pixbuf, glib, gnome3, gtk2-x11, gtk3
 , heimdal, krb5, libsoup, libvorbis, speex, openssl, zlib, xorg, pango, gtk2
-, gnome2, nss, nspr, gtk_engines, freetype, dconf, libpng12, libxml2
+, gnome2, mesa, nss, nspr, gtk_engines, freetype, dconf, libpng12, libxml2
 , libjpeg, libredirect, tzdata, cacert, systemd, libcxxabi, libcxx, e2fsprogs, symlinkJoin
 , libpulseaudio, pcsclite
 
@@ -84,6 +84,7 @@ stdenv.mkDerivation rec {
     libsoup
     libvorbis
     libxml2
+    mesa
     nspr
     nss
     openssl'
diff --git a/pkgs/applications/office/timeular/default.nix b/pkgs/applications/office/timeular/default.nix
index 948918e5491..477ae48b5f4 100644
--- a/pkgs/applications/office/timeular/default.nix
+++ b/pkgs/applications/office/timeular/default.nix
@@ -2,22 +2,30 @@
 , fetchurl
 , appimageTools
 , libsecret
+, gtk3
+, gsettings-desktop-schemas
 }:
 
 let
-  version = "3.4.1";
+  version = "3.9.1";
   pname = "timeular";
   name = "${pname}-${version}";
+
   src = fetchurl {
     url = "https://s3.amazonaws.com/timeular-desktop-packages/linux/production/Timeular-${version}.AppImage";
-    sha256 = "1s5jjdl1nzq9yd582lqs904yl10mp0s25897zmifmcbw1vz38bar";
+    sha256 = "103hy443p697jdkz6li8s1n6kg1r55jmiw2vbjz12kskf7njg4y4";
   };
+
   appimageContents = appimageTools.extractType2 {
     inherit name src;
   };
 in appimageTools.wrapType2 rec {
   inherit name src;
 
+  profile = ''
+    export XDG_DATA_DIRS=${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_DATA_DIRS
+  '';
+
   extraPkgs = pkgs: with pkgs; [
     libsecret
   ];
diff --git a/pkgs/applications/science/biology/dcm2niix/default.nix b/pkgs/applications/science/biology/dcm2niix/default.nix
index 7ec5476cb82..6224ccabb06 100644
--- a/pkgs/applications/science/biology/dcm2niix/default.nix
+++ b/pkgs/applications/science/biology/dcm2niix/default.nix
@@ -6,14 +6,14 @@
 }:
 
 stdenv.mkDerivation rec {
-  version = "1.0.20200331";
+  version = "1.0.20210317";
   pname = "dcm2niix";
 
   src = fetchFromGitHub {
     owner = "rordenlab";
     repo = "dcm2niix";
     rev = "v${version}";
-    sha256 = "1cncfwhyhmg18n970lkn6yvp0i74ajznsl8dqz00asqfzmg681n1";
+    sha256 = "05rjk0xsrzcxa979vlx25k1rdz1in84gkfm9l1h9f7k4a4aa5r6j";
   };
 
   nativeBuildInputs = [ cmake git ];
diff --git a/pkgs/applications/science/logic/lean/default.nix b/pkgs/applications/science/logic/lean/default.nix
index 3a0b13d7d09..aa7fe5ab914 100644
--- a/pkgs/applications/science/logic/lean/default.nix
+++ b/pkgs/applications/science/logic/lean/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "lean";
-  version = "3.29.0";
+  version = "3.30.0";
 
   src = fetchFromGitHub {
     owner  = "leanprover-community";
     repo   = "lean";
     rev    = "v${version}";
-    sha256 = "sha256-f2Gp76c+4R+ww52f1AyVZqixpei1WZPwr7pfgxMMb9Q=";
+    sha256 = "sha256-gJhbkl19iilNyfCt2TfPmghYA3yCjg6kS+yk/x/k14Y=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/applications/science/misc/rink/default.nix b/pkgs/applications/science/misc/rink/default.nix
index 31ae8678719..232e13218cb 100644
--- a/pkgs/applications/science/misc/rink/default.nix
+++ b/pkgs/applications/science/misc/rink/default.nix
@@ -1,17 +1,17 @@
 { lib, fetchFromGitHub, rustPlatform, openssl, pkg-config, ncurses }:
 
 rustPlatform.buildRustPackage rec {
-  version = "0.6.0";
+  version = "0.6.1";
   pname = "rink";
 
   src = fetchFromGitHub {
     owner = "tiffany352";
     repo = "rink-rs";
     rev = "v${version}";
-    sha256 = "sha256-3uhKevuUVh7AObn2GDW2T+5wttX20SbVP+sFaFj3Jmk=";
+    sha256 = "1h93xlavcjvx588q8wkpbzph88yjjhhvzcfxr5nicdca0jnha5ch";
   };
 
-  cargoSha256 = "sha256-luJzIGdcitH+PNgr86AYX6wKEkQlsRhwwylo+hzeovE=";
+  cargoSha256 = "0x4rvfnw3gl2aj6i006nkk3y1f8skyv8g0ss3z2v6qj9nhs7pyir";
 
   nativeBuildInputs = [ pkg-config ];
   buildInputs = [ openssl ncurses ];
diff --git a/pkgs/applications/science/physics/xfitter/default.nix b/pkgs/applications/science/physics/xfitter/default.nix
index d0a0585e69f..4390826ccee 100644
--- a/pkgs/applications/science/physics/xfitter/default.nix
+++ b/pkgs/applications/science/physics/xfitter/default.nix
@@ -39,9 +39,10 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ gfortran which ];
   buildInputs =
-    [ apfel apfelgrid applgrid blas lhapdf lapack mela root5 qcdnum libtirpc ]
+    [ apfel apfelgrid applgrid blas lhapdf lapack mela root5 qcdnum ]
     # pdf2yaml requires fmemopen and open_memstream which are not readily available on Darwin
     ++ lib.optional (!stdenv.isDarwin) libyaml
+    ++ lib.optional (stdenv.hostPlatform.libc == "glibc") libtirpc
     ;
   propagatedBuildInputs = [ lynx ];
 
@@ -49,8 +50,8 @@ stdenv.mkDerivation rec {
 
   hardeningDisable = [ "format" ];
 
-  NIX_CFLAGS_COMPILE = [ "-I${libtirpc.dev}/include/tirpc" ];
-  NIX_LDFLAGS = [ "-ltirpc" ];
+  NIX_CFLAGS_COMPILE = lib.optional (stdenv.hostPlatform.libc == "glibc") "-I${libtirpc.dev}/include/tirpc";
+  NIX_LDFLAGS = lib.optional (stdenv.hostPlatform.libc == "glibc") "-ltirpc";
 
   meta = with lib; {
     description = "The xFitter project is an open source QCD fit framework ready to extract PDFs and assess the impact of new data";
diff --git a/pkgs/applications/science/robotics/sumorobot-manager/default.nix b/pkgs/applications/science/robotics/sumorobot-manager/default.nix
index 0b4b807a481..c0f619b9592 100644
--- a/pkgs/applications/science/robotics/sumorobot-manager/default.nix
+++ b/pkgs/applications/science/robotics/sumorobot-manager/default.nix
@@ -1,22 +1,22 @@
-{ lib, stdenv, python3, qt5, fetchFromGitHub, wrapPython, pyqt5, pyserial }:
+{ lib, stdenv, python3, qt5, fetchFromGitHub, wrapPython, pyqt5, pyserial, dos2unix }:
 
 stdenv.mkDerivation rec {
   pname = "sumorobot-manager";
-  version = "0.9.0";
+  version = "1.0.0";
 
   src = fetchFromGitHub {
     owner = "robokoding";
     repo = pname;
     rev = "v${version}";
-    sha256 = "03zhb54c259a66hsahmv2ajbzwcjnfjj050wbjhw51zqzxinlgqr";
+    sha256 = "07snhwmqqp52vdgr66vx50zxx0nmpmns5cdjgh50hzlhji2z1fl9";
   };
 
   buildInputs = [ python3 ];
   pythonPath = [
-    pyqt5 pyserial
+    pyqt5.dev pyserial
   ];
 
-  nativeBuildInputs = [ wrapPython qt5.wrapQtAppsHook ];
+  nativeBuildInputs = [ wrapPython qt5.wrapQtAppsHook dos2unix ];
 
   buildPhase = "true";
 
@@ -25,6 +25,7 @@ stdenv.mkDerivation rec {
     cp -r main.py lib res $out/opt/sumorobot-manager
     chmod -R 644 $out/opt/sumorobot-manager/lib/*
     mkdir $out/bin
+    dos2unix $out/opt/sumorobot-manager/main.py
     makeQtWrapper $out/opt/sumorobot-manager/main.py $out/bin/sumorobot-manager \
       --run "cd $out/opt/sumorobot-manager"
   '';
diff --git a/pkgs/applications/system/glances/default.nix b/pkgs/applications/system/glances/default.nix
index e41d9bee5b4..c142ba12bc2 100644
--- a/pkgs/applications/system/glances/default.nix
+++ b/pkgs/applications/system/glances/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonApplication rec {
   pname = "glances";
-  version = "3.1.6.2";
+  version = "3.1.7";
   disabled = isPyPy;
 
   src = fetchFromGitHub {
     owner = "nicolargo";
     repo = "glances";
     rev = "v${version}";
-    sha256 = "sha256-6vxJKIwMKz8KQn10aOzqXhVBDfBLylw925hR1hWP7/A=";
+    sha256 = "sha256-82ZD32dqRYGbGM/uyaJ5VqVZbhDZthiEcTihkV43JOU=";
   };
 
   # Some tests fail in the sandbox (they e.g. require access to /sys/class/power_supply):
@@ -45,15 +45,11 @@ buildPythonApplication rec {
     py-cpuinfo
   ] ++ lib.optional stdenv.isLinux hddtemp;
 
-  preConfigure = ''
-    sed -i 's/data_files\.append((conf_path/data_files.append(("etc\/glances"/' setup.py;
-  '';
-
   meta = with lib; {
     homepage = "https://nicolargo.github.io/glances/";
     description = "Cross-platform curses-based monitoring tool";
     changelog = "https://github.com/nicolargo/glances/releases/tag/v${version}";
-    license = licenses.lgpl3;
+    license = licenses.lgpl3Only;
     maintainers = with maintainers; [ jonringer primeos koral ];
   };
 }
diff --git a/pkgs/applications/version-management/git-and-tools/git-machete/default.nix b/pkgs/applications/version-management/git-and-tools/git-machete/default.nix
index 99772f60bc5..f93947d0515 100644
--- a/pkgs/applications/version-management/git-and-tools/git-machete/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/git-machete/default.nix
@@ -4,11 +4,11 @@
 
 buildPythonApplication rec {
   pname = "git-machete";
-  version = "3.1.0";
+  version = "3.1.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0bb6ap8sdp4ad0xkh3y8vj46a363g5gdw0dzf9ycw0z9ah8ispfx";
+    sha256 = "00f1rq80vya464dkvf3mzs9zpvkz15ki8srwg08snsm5kb7amwlm";
   };
 
   nativeBuildInputs = [ installShellFiles pbr ];
diff --git a/pkgs/applications/version-management/redmine/Gemfile.lock b/pkgs/applications/version-management/redmine/Gemfile.lock
index d3afc9de341..7f3fc0650cf 100644
--- a/pkgs/applications/version-management/redmine/Gemfile.lock
+++ b/pkgs/applications/version-management/redmine/Gemfile.lock
@@ -70,28 +70,28 @@ GEM
     globalid (0.4.2)
       activesupport (>= 4.2.0)
     htmlentities (4.3.4)
-    i18n (1.8.9)
+    i18n (1.8.10)
       concurrent-ruby (~> 1.0)
-    loofah (2.9.0)
+    loofah (2.9.1)
       crass (~> 1.0.2)
       nokogiri (>= 1.5.9)
     mail (2.7.1)
       mini_mime (>= 0.1.1)
-    marcel (1.0.0)
+    marcel (1.0.1)
     method_source (1.0.0)
     mini_magick (4.11.0)
     mini_mime (1.0.3)
-    mini_portile2 (2.5.0)
+    mini_portile2 (2.5.1)
     minitest (5.14.4)
     mocha (1.12.0)
     mysql2 (0.5.3)
     net-ldap (0.17.0)
     nio4r (2.5.7)
-    nokogiri (1.11.2)
+    nokogiri (1.11.3)
       mini_portile2 (~> 2.5.0)
       racc (~> 1.4)
     parallel (1.20.1)
-    parser (3.0.0.0)
+    parser (3.0.1.0)
       ast (~> 2.4.1)
     pg (1.2.3)
     public_suffix (4.0.6)
@@ -138,7 +138,7 @@ GEM
     regexp_parser (1.8.2)
     request_store (1.5.0)
       rack (>= 1.4)
-    rexml (3.2.4)
+    rexml (3.2.5)
     roadie (4.0.0)
       css_parser (~> 1.4)
       nokogiri (~> 1.8)
@@ -151,7 +151,7 @@ GEM
       chunky_png (~> 1.0)
       rqrcode_core (~> 0.2)
     rqrcode_core (0.2.0)
-    rubocop (1.12.0)
+    rubocop (1.12.1)
       parallel (~> 1.10)
       parser (>= 3.0.0.0)
       rainbow (>= 2.2.2, < 4.0)
diff --git a/pkgs/applications/version-management/redmine/default.nix b/pkgs/applications/version-management/redmine/default.nix
index e0559a9c48f..7eca72ac5f0 100644
--- a/pkgs/applications/version-management/redmine/default.nix
+++ b/pkgs/applications/version-management/redmine/default.nix
@@ -1,7 +1,7 @@
 { lib, stdenv, fetchurl, bundlerEnv, ruby, makeWrapper }:
 
 let
-  version = "4.2.0";
+  version = "4.2.1";
   rubyEnv = bundlerEnv {
     name = "redmine-env-${version}";
 
@@ -16,7 +16,7 @@ in
 
     src = fetchurl {
       url = "https://www.redmine.org/releases/${pname}-${version}.tar.gz";
-      sha256 = "1r87gy73dclnvcz55vziv6kbgyck0v8jlzx1wwkak8mgh32n8n19";
+      sha256 = "1d217fhyvncpwahwlinr3vc20vn7jijaxxk1i56gw72z8b1hjhdd";
     };
 
     nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/applications/version-management/redmine/gemset.nix b/pkgs/applications/version-management/redmine/gemset.nix
index b545c9d6a3e..2d045a5f292 100644
--- a/pkgs/applications/version-management/redmine/gemset.nix
+++ b/pkgs/applications/version-management/redmine/gemset.nix
@@ -269,10 +269,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "08p6b13p99j1rrcrw1l3v0kb9mxbsvy6nk31r8h4rnszdgzpga32";
+      sha256 = "0g2fnag935zn2ggm5cn6k4s4xvv53v2givj1j90szmvavlpya96a";
       type = "gem";
     };
-    version = "1.8.9";
+    version = "1.8.10";
   };
   loofah = {
     dependencies = ["crass" "nokogiri"];
@@ -280,10 +280,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0bzwvxvilx7w1p3pg028ks38925y9i0xm870lm7s12w7598hiyck";
+      sha256 = "1w9mbii8515p28xd4k72f3ab2g6xiyq15497ys5r8jn6m355lgi7";
       type = "gem";
     };
-    version = "2.9.0";
+    version = "2.9.1";
   };
   mail = {
     dependencies = ["mini_mime"];
@@ -301,10 +301,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1vhp6lifwvqs2b0a276lj61n86c1l7d1xiswjj2w23f54gl51mpk";
+      sha256 = "0bp001p687nsa4a8sp3q1iv8pfhs24w7s3avychjp64sdkg6jxq3";
       type = "gem";
     };
-    version = "1.0.0";
+    version = "1.0.1";
   };
   method_source = {
     groups = ["default"];
@@ -341,10 +341,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1hdbpmamx8js53yk3h8cqy12kgv6ca06k0c9n3pxh6b6cjfs19x7";
+      sha256 = "0xg1x4708a4pn2wk8qs2d8kfzzdyv9kjjachg2f1phsx62ap2rx2";
       type = "gem";
     };
-    version = "2.5.0";
+    version = "2.5.1";
   };
   minitest = {
     groups = ["default" "test"];
@@ -410,10 +410,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0b51df8fwadak075cvi17w0nch6qz1r66564qp29qwfj67j9qp0p";
+      sha256 = "19d78mdg2lbz9jb4ph6nk783c9jbsdm8rnllwhga6pd53xffp6x0";
       type = "gem";
     };
-    version = "1.11.2";
+    version = "1.11.3";
   };
   parallel = {
     groups = ["default" "test"];
@@ -431,10 +431,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1jixakyzmy0j5c1rb0fjrrdhgnyryvrr6vgcybs14jfw09akv5ml";
+      sha256 = "04ri489irbbx6sbkclpgri7j7p99v2qib5g2i70xx5fay12ilny8";
       type = "gem";
     };
-    version = "3.0.0.0";
+    version = "3.0.1.0";
   };
   pg = {
     groups = ["default"];
@@ -638,10 +638,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1mkvkcw9fhpaizrhca0pdgjcrbns48rlz4g6lavl5gjjq3rk2sq3";
+      sha256 = "08ximcyfjy94pm1rhcx04ny1vx2sk0x4y185gzn86yfsbzwkng53";
       type = "gem";
     };
-    version = "3.2.4";
+    version = "3.2.5";
   };
   roadie = {
     dependencies = ["css_parser" "nokogiri"];
@@ -712,10 +712,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1i3y0h6awywx4rdmjdan908jmnyk589pndbjypxkfbkqvjx514fw";
+      sha256 = "0hi2c3a6alya9yx07nirnjzlc0mvmidnx67874njp6wf7d5xqqr9";
       type = "gem";
     };
-    version = "1.12.0";
+    version = "1.12.1";
   };
   rubocop-ast = {
     dependencies = ["parser"];
diff --git a/pkgs/applications/video/makemkv/default.nix b/pkgs/applications/video/makemkv/default.nix
index 817daf31d0a..da18a8d7abe 100644
--- a/pkgs/applications/video/makemkv/default.nix
+++ b/pkgs/applications/video/makemkv/default.nix
@@ -3,7 +3,7 @@
 , fetchurl
 , autoPatchelfHook
 , pkg-config
-, ffmpeg_3
+, ffmpeg
 , openssl
 , qtbase
 , zlib
@@ -39,7 +39,7 @@ in mkDerivation {
 
   nativeBuildInputs = [ autoPatchelfHook pkg-config ];
 
-  buildInputs = [ ffmpeg_3 openssl qtbase zlib ];
+  buildInputs = [ ffmpeg openssl qtbase zlib ];
 
   qtWrapperArgs =
     let
diff --git a/pkgs/applications/virtualization/cloud-hypervisor/default.nix b/pkgs/applications/virtualization/cloud-hypervisor/default.nix
index 5a12be3afa6..d04c0230c97 100644
--- a/pkgs/applications/virtualization/cloud-hypervisor/default.nix
+++ b/pkgs/applications/virtualization/cloud-hypervisor/default.nix
@@ -2,19 +2,19 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cloud-hypervisor";
-  version = "0.14.1";
+  version = "15.0";
 
   src = fetchFromGitHub {
     owner = "cloud-hypervisor";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0pnfg6dzpz8v40cwg3dmlj52x8pblavv7mkczar814dwbk01y7vr";
+    sha256 = "14s80vs7j5fxzl2a6k44fjlbk8i13lln28i37xaa6yk1q3d9jwic";
   };
 
   nativeBuildInputs = [ pkg-config ];
   buildInputs = [ openssl ] ++ lib.optional stdenv.isAarch64 dtc;
 
-  cargoSha256 = "0dbjds40znly11i0ssfv66w82ynxp00ixw1349m5ln9i9ms94sr4";
+  cargoSha256 = "02q4k7j1hyibsiwsbqa5bd4vr3fs1vngnnhqa4kzvih73bkagvk7";
 
   meta = with lib; {
     homepage = "https://github.com/cloud-hypervisor/cloud-hypervisor";
diff --git a/pkgs/applications/virtualization/open-vm-tools/default.nix b/pkgs/applications/virtualization/open-vm-tools/default.nix
index e56293dcc64..bc66791ad36 100644
--- a/pkgs/applications/virtualization/open-vm-tools/default.nix
+++ b/pkgs/applications/virtualization/open-vm-tools/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation rec {
   pname = "open-vm-tools";
-  version = "11.2.0";
+  version = "11.2.5";
 
   src = fetchFromGitHub {
     owner  = "vmware";
     repo   = "open-vm-tools";
     rev    = "stable-${version}";
-    sha256 = "125y3zdhj353dmmjmssdaib2zp1jg5aiqmvpgkrzhnh5nx2icfv6";
+    sha256 = "sha256-Jv+NSKw/+l+b4lfVGgCZFlcTScO/WAO/d7DtI0FAEV4=";
   };
 
   sourceRoot = "${src.name}/open-vm-tools";
diff --git a/pkgs/applications/window-managers/river/default.nix b/pkgs/applications/window-managers/river/default.nix
index d6869b4786f..9b40d34b6f2 100644
--- a/pkgs/applications/window-managers/river/default.nix
+++ b/pkgs/applications/window-managers/river/default.nix
@@ -1,19 +1,7 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, libGL
-, libX11
-, libevdev
-, libxkbcommon
-, pixman
-, pkg-config
-, scdoc
-, udev
-, wayland
-, wayland-protocols
-, wlroots
-, xwayland
-, zig
+{ lib, stdenv ,fetchFromGitHub
+, zig, wayland, pkg-config, scdoc
+, xwayland, wayland-protocols, wlroots
+, libxkbcommon, pixman, udev, libevdev, libX11, libGL
 }:
 
 stdenv.mkDerivation rec {
@@ -24,62 +12,33 @@ stdenv.mkDerivation rec {
     owner = "ifreund";
     repo = pname;
     rev = "0c8e718d95a6a621b9cba0caa9158915e567b076";
-    sha256 = "sha256-c3lzsA2oml7DlfYA5mipHafF3Y3mqY1eJR6e2H8DUMo=";
+    sha256 = "1jjh0dzxi7hy4mg8vag6ipfwb9qxm5lfc07njp1mx6m81nq76ybk";
     fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [
-    pkg-config
-    scdoc
-    wayland-protocols
-    zig
+  buildInputs = [ xwayland wayland-protocols wlroots pixman
+    libxkbcommon pixman udev libevdev libX11 libGL
   ];
-  buildInputs = [
-    libGL
-    libX11
-    libevdev
-    libxkbcommon
-    pixman
-    pixman
-    udev
-    wayland
-    wlroots
-    xwayland
-  ];
-
-  dontConfigure = true;
 
-  buildPhase = ''
-    runHook preBuild
+  preBuild = ''
     export HOME=$TMPDIR
-    zig build -Dman-pages -Drelease-safe -Dxwayland --prefix $out
-    runHook postBuild
   '';
-
   installPhase = ''
-    runHook preInstall
-    zig build -Dman-pages -Drelease-safe -Dxwayland --prefix $out install
-    runHook postInstall
+    zig build -Drelease-safe -Dxwayland -Dman-pages --prefix $out install
   '';
 
+  nativeBuildInputs = [ zig wayland scdoc pkg-config ];
+
+  installFlags = [ "DESTDIR=$(out)" ];
+
   meta = with lib; {
-    homepage = "https://github.com/ifreund/river";
     description = "A dynamic tiling wayland compositor";
     longDescription = ''
-      river is a dynamic tiling wayland compositor that takes inspiration from
-      dwm and bspwm.
-
-      Its design goals are:
-      - Simplicity and minimalism, river should not overstep the bounds of a
-        window manager.
-      - Window management based on a stack of views and tags.
-      - Dynamic layouts generated by external, user-written executables.
-        (A default rivertile layout generator is provided.)
-      - Scriptable configuration and control through a custom wayland protocol
-        and separate riverctl binary implementing it.
+      river is a dynamic tiling wayland compositor that takes inspiration from dwm and bspwm.
     '';
+    homepage = "https://github.com/ifreund/river";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ branwright1 AndersonTorres ];
     platforms = platforms.linux;
+    maintainers = with maintainers; [ branwright1 ];
   };
 }
diff --git a/pkgs/build-support/build-fhs-userenv-bubblewrap/default.nix b/pkgs/build-support/build-fhs-userenv-bubblewrap/default.nix
index 1911d08d2a1..868686bd5c0 100644
--- a/pkgs/build-support/build-fhs-userenv-bubblewrap/default.nix
+++ b/pkgs/build-support/build-fhs-userenv-bubblewrap/default.nix
@@ -14,6 +14,7 @@ args @ {
 , unshareNet ? false
 , unshareUts ? true
 , unshareCgroup ? true
+, dieWithParent ? true
 , ...
 }:
 
@@ -22,7 +23,7 @@ let
   buildFHSEnv = callPackage ./env.nix { };
 
   env = buildFHSEnv (removeAttrs args [
-    "runScript" "extraInstallCommands" "meta" "passthru"
+    "runScript" "extraInstallCommands" "meta" "passthru" "dieWithParent"
     "unshareUser" "unshareCgroup" "unshareUts" "unshareNet" "unsharePid" "unshareIpc"
   ]);
 
@@ -30,6 +31,13 @@ let
     files = [
       # NixOS Compatibility
       "static"
+      "nix" # mainly for nixUnstable users, but also for access to nix/netrc
+      # Shells
+      "bashrc"
+      "zshenv"
+      "zshrc"
+      "zinputrc"
+      "zprofile"
       # Users, Groups, NSS
       "passwd"
       "group"
@@ -136,7 +144,7 @@ let
       ${lib.optionalString unshareNet "--unshare-net"}
       ${lib.optionalString unshareUts "--unshare-uts"}
       ${lib.optionalString unshareCgroup "--unshare-cgroup"}
-      --die-with-parent
+      ${lib.optionalString dieWithParent "--die-with-parent"}
       --ro-bind /nix /nix
       # Our glibc will look for the cache in its own path in `/nix/store`.
       # As such, we need a cache to exist there, because pressure-vessel
diff --git a/pkgs/data/documentation/man-pages-posix/default.nix b/pkgs/data/documentation/man-pages-posix/default.nix
index ca7fdf1d4be..1d9ddda377b 100644
--- a/pkgs/data/documentation/man-pages-posix/default.nix
+++ b/pkgs/data/documentation/man-pages-posix/default.nix
@@ -1,11 +1,16 @@
 {lib, stdenv, fetchurl}:
 
+let
+  year = "2017";
+  minor = "a";
+in
+
 stdenv.mkDerivation rec {
   pname = "man-pages-posix";
-  version = "2017-a";
+  version = "${year}${minor}";
 
   src = fetchurl {
-    url = "mirror://kernel/linux/docs/man-pages/man-pages-posix/${pname}-${version}.tar.xz";
+    url = "mirror://kernel/linux/docs/man-pages/man-pages-posix/${pname}-${year}-${minor}.tar.xz";
     sha256 = "ce67bb25b5048b20dad772e405a83f4bc70faf051afa289361c81f9660318bc3";
   };
 
diff --git a/pkgs/data/icons/tela-icon-theme/default.nix b/pkgs/data/icons/tela-icon-theme/default.nix
index 7bbad945206..aaf32fdf16d 100644
--- a/pkgs/data/icons/tela-icon-theme/default.nix
+++ b/pkgs/data/icons/tela-icon-theme/default.nix
@@ -1,6 +1,6 @@
-{ fetchFromGitHub, gtk3, hicolor-icon-theme, jdupes, lib, stdenv }:
+{ fetchFromGitHub, gtk3, hicolor-icon-theme, jdupes, lib, stdenvNoCC }:
 
-stdenv.mkDerivation rec {
+stdenvNoCC.mkDerivation rec {
   pname = "tela-icon-theme";
   version = "2021-01-21";
 
@@ -17,19 +17,25 @@ stdenv.mkDerivation rec {
 
   dontDropIconThemeCache = true;
 
+  # These fixup steps are slow and unnecessary.
+  dontPatchELF = true;
+  dontRewriteSymlinks = true;
+
   installPhase = ''
     runHook preInstall
+
     patchShebangs install.sh
     mkdir -p $out/share/icons
     ./install.sh -a -d $out/share/icons
     jdupes -l -r $out/share/icons
+
     runHook postInstall
   '';
 
   meta = with lib; {
     description = "A flat colorful Design icon theme";
     homepage = "https://github.com/vinceliuice/tela-icon-theme";
-    license = licenses.gpl3Plus;
+    license = licenses.gpl3Only;
     platforms = platforms.unix;
     maintainers = with maintainers; [ figsoda ];
   };
diff --git a/pkgs/desktops/lxqt/lxqt-powermanagement/default.nix b/pkgs/desktops/lxqt/lxqt-powermanagement/default.nix
index a1b06806740..3713bcf0bb5 100644
--- a/pkgs/desktops/lxqt/lxqt-powermanagement/default.nix
+++ b/pkgs/desktops/lxqt/lxqt-powermanagement/default.nix
@@ -18,13 +18,13 @@
 
 mkDerivation rec {
   pname = "lxqt-powermanagement";
-  version = "0.17.0";
+  version = "0.17.1";
 
   src = fetchFromGitHub {
     owner = "lxqt";
     repo = pname;
     rev = version;
-    sha256 = "1ikkksg5k7jwph7060h8wyk7bdsywvhl47zp23j5gcig0nk62ggf";
+    sha256 = "04prx15l05kw97mwajc8yi2s7p3n6amzs5jnnmh9payxzp6glzmk";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/lxqt/obconf-qt/default.nix b/pkgs/desktops/lxqt/obconf-qt/default.nix
index 442c4c940b0..18d3f9899b4 100644
--- a/pkgs/desktops/lxqt/obconf-qt/default.nix
+++ b/pkgs/desktops/lxqt/obconf-qt/default.nix
@@ -15,13 +15,13 @@
 
 mkDerivation rec {
   pname = "obconf-qt";
-  version = "0.16.0";
+  version = "0.16.1";
 
   src = fetchFromGitHub {
     owner = "lxqt";
     repo = pname;
     rev = version;
-    sha256 = "0kk5scp1j0hqi27q3yl9cg73ybxzm22nj96pa8adhdn4shg9bpac";
+    sha256 = "1nw2r3h7ynmygpslnzjn40vvickd988nm31wy2b645xcck89q4rm";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/mate/mate-session-manager/default.nix b/pkgs/desktops/mate/mate-session-manager/default.nix
index c0cd12bd273..f790b0f65dc 100644
--- a/pkgs/desktops/mate/mate-session-manager/default.nix
+++ b/pkgs/desktops/mate/mate-session-manager/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   pname = "mate-session-manager";
-  version = "1.24.2";
+  version = "1.24.3";
 
   src = fetchurl {
     url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "1jcb5k2fx2rwwbrslgv1xlzaiwiwjnxjwnp503qf8cg89w69q2vb";
+    sha256 = "18mhv8dq18hvx28gi88c9499s3s1nsq55m64sas8fqlvnp2sx84h";
   };
 
   patches = [
diff --git a/pkgs/desktops/xfce/applications/gigolo/default.nix b/pkgs/desktops/xfce/applications/gigolo/default.nix
index b9ff011f3be..4b7c258ca59 100644
--- a/pkgs/desktops/xfce/applications/gigolo/default.nix
+++ b/pkgs/desktops/xfce/applications/gigolo/default.nix
@@ -1,4 +1,4 @@
-{ lib, mkXfceDerivation, gtk3, gvfs, glib }:
+{ lib, mkXfceDerivation, gtk3, glib }:
 
 mkXfceDerivation {
   category = "apps";
@@ -8,12 +8,7 @@ mkXfceDerivation {
 
   sha256 = "8UDb4H3zxRKx2y+MRsozQoR3es0fs5ooR/5wBIE11bY=";
 
-  buildInputs = [ gtk3 glib gvfs ];
-
-  postPatch = ''
-    # exo-csource has been dropped from exo
-    substituteInPlace src/Makefile.am --replace exo-csource xdt-csource
-  '';
+  buildInputs = [ gtk3 glib ];
 
   meta = {
     description = "A frontend to easily manage connections to remote filesystems";
diff --git a/pkgs/desktops/xfce/core/thunar/default.nix b/pkgs/desktops/xfce/core/thunar/default.nix
index cc94683ddde..e220e29f3ed 100644
--- a/pkgs/desktops/xfce/core/thunar/default.nix
+++ b/pkgs/desktops/xfce/core/thunar/default.nix
@@ -12,7 +12,6 @@
 , libxslt
 , xfconf
 , gobject-introspection
-, gvfs
 , makeWrapper
 , symlinkJoin
 , thunarPlugins ? []
@@ -35,7 +34,6 @@ let unwrapped = mkXfceDerivation {
     exo
     gdk-pixbuf
     gtk3
-    gvfs
     libX11
     libgudev
     libnotify
diff --git a/pkgs/desktops/xfce/default.nix b/pkgs/desktops/xfce/default.nix
index 12f487f1784..1b7877cd79d 100644
--- a/pkgs/desktops/xfce/default.nix
+++ b/pkgs/desktops/xfce/default.nix
@@ -15,9 +15,6 @@ lib.makeScope pkgs.newScope (self: with self; {
 
   automakeAddFlags = pkgs.makeSetupHook { } ./automakeAddFlags.sh;
 
-  # Samba is a rather heavy dependency
-  gvfs = pkgs.gvfs.override { samba = null; };
-
   #### CORE
 
   exo = callPackage ./core/exo { };
diff --git a/pkgs/development/compilers/nim/default.nix b/pkgs/development/compilers/nim/default.nix
index 676e35b06bb..21d1017a675 100644
--- a/pkgs/development/compilers/nim/default.nix
+++ b/pkgs/development/compilers/nim/default.nix
@@ -95,12 +95,12 @@ in {
 
   nim-unwrapped = stdenv.mkDerivation rec {
     pname = "nim-unwrapped";
-    version = "1.4.4";
+    version = "1.4.6";
     strictDeps = true;
 
     src = fetchurl {
       url = "https://nim-lang.org/download/nim-${version}.tar.xz";
-      sha256 = "03k642nnjca0s6jlbn1v4jld51mbkix97jli4ky74gqlxyfp4wvd";
+      hash = "sha256-D7wPkoLP/oXembxHv6h2Ulud3aKi6uVcGFoIgEuY070=";
     };
 
     buildInputs = [ boehmgc openssl pcre readline sqlite ];
diff --git a/pkgs/development/compilers/ophis/default.nix b/pkgs/development/compilers/ophis/default.nix
index f28513a9bb2..2ddfa849b66 100644
--- a/pkgs/development/compilers/ophis/default.nix
+++ b/pkgs/development/compilers/ophis/default.nix
@@ -11,7 +11,7 @@ buildPythonApplication rec {
     sha256 = "2x8vwLTSngqQqmVrVh/mM4peATgaRqOSwrfm5XCkg/g=";
   };
 
-  sourceRoot = "./src";
+  sourceRoot = "${src.name}/src";
 
   meta = with lib; {
     homepage = "http://michaelcmartin.github.io/Ophis/";
diff --git a/pkgs/development/interpreters/mujs/default.nix b/pkgs/development/interpreters/mujs/default.nix
index d9b52af9254..46f86f85fc3 100644
--- a/pkgs/development/interpreters/mujs/default.nix
+++ b/pkgs/development/interpreters/mujs/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "mujs";
-  version = "1.1.1";
+  version = "1.1.2";
 
   src = fetchurl {
     url = "https://mujs.com/downloads/mujs-${version}.tar.xz";
-    sha256 = "sha256-meYfyWGfHVULVjVyA7NJ2Ih9CjbffblWc1yijU/3e7A=";
+    sha256 = "sha256-cZ6IK7fZhkDvoWM4Hpto7xzjXIekIuKqQZDJ5AIlh10=";
   };
 
   buildInputs = [ readline ];
diff --git a/pkgs/development/libraries/cjose/default.nix b/pkgs/development/libraries/cjose/default.nix
new file mode 100644
index 00000000000..57b5c6c1b8b
--- /dev/null
+++ b/pkgs/development/libraries/cjose/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, autoreconfHook
+, pkg-config
+, doxygen
+, check
+, jansson
+, openssl
+}:
+
+stdenv.mkDerivation rec {
+  pname = "cjose";
+  version = "0.6.1";
+
+  src = fetchFromGitHub {
+    owner = "cisco";
+    repo = "cjose";
+    rev = version;
+    sha256 = "1msyjwmylb5c7jc16ryx3xb9cdwx682ihsm0ni766y6dfwx8bkhp";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkg-config doxygen ];
+  buildInputs = [ jansson openssl ];
+  checkInputs = [ check ];
+
+  configureFlags = [
+    "--with-jansson=${jansson}"
+    "--with-openssl=${openssl.dev}"
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/cisco/cjose";
+    changelog = "https://github.com/cisco/cjose/blob/${version}/CHANGELOG.md";
+    description = "C library for Javascript Object Signing and Encryption";
+    license = licenses.mit;
+    maintainers = with maintainers; [ midchildan ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/development/libraries/clanlib/default.nix b/pkgs/development/libraries/clanlib/default.nix
new file mode 100644
index 00000000000..15fd9cd7286
--- /dev/null
+++ b/pkgs/development/libraries/clanlib/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, autoreconfHook
+, libGL
+, libpng
+, pkg-config
+, xorg
+, file
+, freetype
+, fontconfig
+, xlibsWrapper
+, alsaLib
+, libXrender
+}:
+
+stdenv.mkDerivation rec {
+  pname = "clanlib";
+  version = "4.1.0";
+
+  src = fetchFromGitHub {
+    repo = "ClanLib";
+    owner = "sphair";
+    rev = "v${version}";
+    sha256 = "sha256-SVsLWcTP+PCIGDWLkadMpJPj4coLK9dJrW4sc2+HotE=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    autoreconfHook
+  ];
+  buildInputs = [
+    libGL
+    libpng
+    xorg.xorgproto
+    freetype
+    fontconfig
+    xlibsWrapper
+    alsaLib
+    libXrender
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/sphair/ClanLib";
+    description = "A cross platform toolkit library with a primary focus on game creation";
+    license = licenses.mit;
+    maintainers = with maintainers; [ nixinator ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/development/libraries/geoclue/add-option-for-installation-sysconfdir.patch b/pkgs/development/libraries/geoclue/add-option-for-installation-sysconfdir.patch
index 9eb53acebb0..63948ab4fad 100644
--- a/pkgs/development/libraries/geoclue/add-option-for-installation-sysconfdir.patch
+++ b/pkgs/development/libraries/geoclue/add-option-for-installation-sysconfdir.patch
@@ -65,17 +65,20 @@ index fde6fa3..39b7b0a 100644
  conf.set_quoted('LOCALEDIR', localedir)
 -conf.set_quoted('SYSCONFDIR', sysconfdir)
 +conf.set_quoted('SYSCONFDIR', get_option('sysconfdir'))
+ conf.set_quoted('MOZILLA_API_KEY', get_option('mozilla-api-key'))
  conf.set10('GCLUE_USE_3G_SOURCE', get_option('3g-source'))
  conf.set10('GCLUE_USE_CDMA_SOURCE', get_option('cdma-source'))
- conf.set10('GCLUE_USE_MODEM_GPS_SOURCE', get_option('modem-gps-source'))
 diff --git a/meson_options.txt b/meson_options.txt
 index 83bc60e..b726329 100644
 --- a/meson_options.txt
 +++ b/meson_options.txt
-@@ -34,3 +34,6 @@ option('systemd-system-unit-dir',
+@@ -34,6 +34,9 @@ option('systemd-system-unit-dir',
  option('dbus-srv-user',
         type: 'string', value: 'root',
         description: 'The user (existing) as which the service will run')
 +option('sysconfdir_install',
 +       type: 'string', value: '',
 +       description: 'sysconfdir to use during installation')
+ option('mozilla-api-key',
+        type: 'string', value: 'geoclue',
+        description: 'Your API key for Mozilla Location Service')
diff --git a/pkgs/development/libraries/geoclue/default.nix b/pkgs/development/libraries/geoclue/default.nix
index 711f1a444b3..360094ea765 100644
--- a/pkgs/development/libraries/geoclue/default.nix
+++ b/pkgs/development/libraries/geoclue/default.nix
@@ -1,50 +1,98 @@
-{ lib, stdenv, fetchFromGitLab, intltool, meson, ninja, pkg-config, gtk-doc, docbook_xsl, docbook_xml_dtd_412, glib, json-glib, libsoup, libnotify, gdk-pixbuf
-, modemmanager, avahi, glib-networking, python3, wrapGAppsHook, gobject-introspection, vala
+{ lib
+, stdenv
+, fetchFromGitLab
+, fetchpatch
+, intltool
+, meson
+, ninja
+, pkg-config
+, gtk-doc
+, docbook-xsl-nons
+, docbook_xml_dtd_412
+, glib
+, json-glib
+, libsoup
+, libnotify
+, gdk-pixbuf
+, modemmanager
+, avahi
+, glib-networking
+, python3
+, wrapGAppsHook
+, gobject-introspection
+, vala
 , withDemoAgent ? false
 }:
 
-with lib;
-
 stdenv.mkDerivation rec {
   pname = "geoclue";
-  version = "2.5.6";
+  version = "2.5.7";
+
+  outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchFromGitLab {
     domain = "gitlab.freedesktop.org";
     owner = pname;
     repo = pname;
     rev = version;
-    sha256 = "13fk6n4j74lvcsrg3kwbw1mkxgcr3iy9dnysmy0pclfsym8z5m5m";
+    sha256 = "1mv1vs4q94bqkmgkj53jcsw1x31kczwydyy3r27a7fycgzmii1pj";
   };
 
   patches = [
+    # Make the Mozilla API key configurable
+    # https://gitlab.freedesktop.org/geoclue/geoclue/merge_requests/54 (only partially backported)
+    (fetchpatch {
+      url = "https://gitlab.freedesktop.org/geoclue/geoclue/commit/95c9ad4dc176860c85a07d0db4cb4179929bdb54.patch";
+      sha256 = "/lq/dLBJl2vf16tt7emYoTtXY6iUw+4s2XcABUHp3Kc=";
+    })
+    (fetchpatch {
+      url = "https://gitlab.freedesktop.org/geoclue/geoclue/commit/1a00809a0d89b0849a57647c878d192354247a33.patch";
+      sha256 = "6FuiukgFWg2cEKt8LlKP4E0rfSH/ZQgk6Ip1mGJpNFQ=";
+    })
+
     ./add-option-for-installation-sysconfdir.patch
   ];
 
-  outputs = [ "out" "dev" "devdoc" ];
-
   nativeBuildInputs = [
-    pkg-config intltool meson ninja wrapGAppsHook python3 vala gobject-introspection
+    pkg-config
+    intltool
+    meson
+    ninja
+    wrapGAppsHook
+    python3
+    vala
+    gobject-introspection
     # devdoc
-    gtk-doc docbook_xsl docbook_xml_dtd_412
+    gtk-doc
+    docbook-xsl-nons
+    docbook_xml_dtd_412
   ];
 
   buildInputs = [
-    glib json-glib libsoup avahi
-  ] ++ optionals withDemoAgent [
+    glib
+    json-glib
+    libsoup
+    avahi
+  ] ++ lib.optionals withDemoAgent [
     libnotify gdk-pixbuf
-  ] ++ optionals (!stdenv.isDarwin) [ modemmanager ];
+  ] ++ lib.optionals (!stdenv.isDarwin) [
+    modemmanager
+  ];
 
-  propagatedBuildInputs = [ glib glib-networking ];
+  propagatedBuildInputs = [
+    glib
+    glib-networking
+  ];
 
   mesonFlags = [
     "-Dsystemd-system-unit-dir=${placeholder "out"}/etc/systemd/system"
-    "-Ddemo-agent=${boolToString withDemoAgent}"
+    "-Ddemo-agent=${lib.boolToString withDemoAgent}"
     "--sysconfdir=/etc"
     "-Dsysconfdir_install=${placeholder "out"}/etc"
+    "-Dmozilla-api-key=5c28d1f4-9511-47ff-b11a-2bef80fc177c"
     "-Ddbus-srv-user=geoclue"
     "-Ddbus-sys-dir=${placeholder "out"}/share/dbus-1/system.d"
-  ] ++ optionals stdenv.isDarwin [
+  ] ++ lib.optionals stdenv.isDarwin [
     "-D3g-source=false"
     "-Dcdma-source=false"
     "-Dmodem-gps-source=false"
diff --git a/pkgs/development/libraries/grpc/default.nix b/pkgs/development/libraries/grpc/default.nix
index 9dd5150f17d..cb2c0e79dd5 100644
--- a/pkgs/development/libraries/grpc/default.nix
+++ b/pkgs/development/libraries/grpc/default.nix
@@ -3,13 +3,13 @@
 }:
 
 stdenv.mkDerivation rec {
-  version = "1.37.0"; # N.B: if you change this, change pythonPackages.grpcio-tools to a matching version too
+  version = "1.37.1"; # N.B: if you change this, change pythonPackages.grpcio-tools to a matching version too
   pname = "grpc";
   src = fetchFromGitHub {
     owner = "grpc";
     repo = "grpc";
     rev = "v${version}";
-    sha256 = "0q3hcnq351j0qm0gsbaxbsnz1gd9w3bk4cazkvq4l2lfmmiw7z56";
+    sha256 = "0mjlz2cax5v37g7xnrbf5px88bm7xzl4a5pds112yk096d7wmxm5";
     fetchSubmodules = true;
   };
   patches = [
diff --git a/pkgs/development/libraries/hyperscan/default.nix b/pkgs/development/libraries/hyperscan/default.nix
index f160afb99b7..4093578156a 100644
--- a/pkgs/development/libraries/hyperscan/default.nix
+++ b/pkgs/development/libraries/hyperscan/default.nix
@@ -11,12 +11,12 @@
 
 stdenv.mkDerivation rec {
   pname = "hyperscan";
-  version = "5.3.0";
+  version = "5.4.0";
 
   src = fetchFromGitHub {
     owner = "intel";
     repo = pname;
-    sha256 = "0psfkzmyhqfrs750b10d0xv37rcz6nwsw1mnc7zagijckwis2wvj";
+    sha256 = "sha256-AJAjaXVnGqIlMk+gb6lpTLUdZr8nxn2XSW4fj6j/cmk=";
     rev = "v${version}";
   };
 
diff --git a/pkgs/development/libraries/libadwaita/default.nix b/pkgs/development/libraries/libadwaita/default.nix
new file mode 100644
index 00000000000..486326f15f8
--- /dev/null
+++ b/pkgs/development/libraries/libadwaita/default.nix
@@ -0,0 +1,67 @@
+{ lib
+, stdenv
+, fetchFromGitLab
+, docbook-xsl-nons
+, gtk-doc
+, meson
+, ninja
+, pkg-config
+, sassc
+, vala
+, gobject-introspection
+, gtk4
+, xvfb_run
+}:
+
+stdenv.mkDerivation rec {
+  pname = "libadwaita";
+  version = "unstable-2021-05-01";
+
+  outputs = [ "out" "dev" "devdoc" ];
+  outputBin = "dev";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "GNOME";
+    repo = "libadwaita";
+    rev = "8d66b987a19979d9d7b85dacc6bad5ce0c8743fe";
+    sha256 = "0i3wav6jsyi4w4i2r1rad769m5y5s9djj4zqb7dfyh0bad24ba3q";
+  };
+
+  nativeBuildInputs = [
+    docbook-xsl-nons
+    gtk-doc
+    meson
+    ninja
+    pkg-config
+    sassc
+    vala
+  ];
+
+  mesonFlags = [
+    "-Dgtk_doc=true"
+  ];
+
+  buildInputs = [
+    gobject-introspection
+    gtk4
+  ];
+
+  checkInputs = [
+    xvfb_run
+  ];
+
+  doCheck = true;
+
+  checkPhase = ''
+    xvfb-run meson test
+  '';
+
+  meta = with lib; {
+    description = "Library to help with developing UI for mobile devices using GTK/GNOME";
+    homepage = "https://gitlab.gnome.org/GNOME/libadwaita";
+    license = licenses.lgpl21Plus;
+    maintainers = with maintainers; [ dotlambda ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/libfaketime/default.nix b/pkgs/development/libraries/libfaketime/default.nix
index ced1c3e7bb9..34c957715dd 100644
--- a/pkgs/development/libraries/libfaketime/default.nix
+++ b/pkgs/development/libraries/libfaketime/default.nix
@@ -39,5 +39,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = platforms.all;
     maintainers = [ maintainers.bjornfor ];
+    mainProgram = "faketime";
   };
 }
diff --git a/pkgs/development/libraries/netcdf-cxx4/default.nix b/pkgs/development/libraries/netcdf-cxx4/default.nix
index b594a672140..494f4bf7157 100644
--- a/pkgs/development/libraries/netcdf-cxx4/default.nix
+++ b/pkgs/development/libraries/netcdf-cxx4/default.nix
@@ -1,15 +1,22 @@
-{ lib, stdenv, fetchurl, netcdf, hdf5, curl }:
+{ lib, stdenv, fetchzip, netcdf, hdf5, curl, cmake, ninja }:
 stdenv.mkDerivation rec {
   pname = "netcdf-cxx4";
-  version = "4.3.0";
+  version = "4.3.1";
 
-  src = fetchurl {
+  src = fetchzip {
     url = "https://github.com/Unidata/netcdf-cxx4/archive/v${version}.tar.gz";
-    sha256 = "13zi8cbk18gggx1c12a580wdsbl714lw68a1wg7c86x0sybirni5";
+    sha256 = "05kydd5z9iil5iv4fp7l11cicda5n5lsg5sdmsmc55xpspnsg7hr";
   };
 
+  preConfigure = ''
+    cmakeFlags+="-Dabs_top_srcdir=$(readlink -f ./)"
+  '';
+
+  nativeBuildInputs = [ cmake ninja ];
   buildInputs = [ netcdf hdf5 curl ];
+
   doCheck = true;
+  enableParallelChecking = false;
 
   meta = {
     description = "C++ API to manipulate netcdf files";
diff --git a/pkgs/development/libraries/ogre/default.nix b/pkgs/development/libraries/ogre/default.nix
index ae65da3f418..d097dc623e7 100644
--- a/pkgs/development/libraries/ogre/default.nix
+++ b/pkgs/development/libraries/ogre/default.nix
@@ -6,6 +6,7 @@
 , libXxf86vm, libICE
 , unzip
 , libXrender
+, SDL2
 , withNvidiaCg ? false, nvidia_cg_toolkit
 , withSamples ? false }:
 
@@ -18,7 +19,7 @@ stdenv.mkDerivation rec {
      sha256 = "1iv6k0dwdzg5nnzw2mcgcl663q4f7p2kj7nhs8afnsikrzxxgsi4";
   };
 
-  cmakeFlags = [ "-DOGRE_BUILD_SAMPLES=${toString withSamples}" ]
+  cmakeFlags = [ "-DOGRE_BUILD_DEPENDENCIES=OFF" "-DOGRE_BUILD_SAMPLES=${toString withSamples}" ]
     ++ map (x: "-DOGRE_BUILD_PLUGIN_${x}=on")
            ([ "BSP" "OCTREE" "PCZ" "PFX" ] ++ lib.optional withNvidiaCg "CG")
     ++ map (x: "-DOGRE_BUILD_RENDERSYSTEM_${x}=on") [ "GL" ];
@@ -32,6 +33,7 @@ stdenv.mkDerivation rec {
      libX11 libXmu libSM
      libXxf86vm libICE
      libXrender
+     SDL2
    ] ++ lib.optional withNvidiaCg nvidia_cg_toolkit;
 
   meta = {
diff --git a/pkgs/development/libraries/openscenegraph/default.nix b/pkgs/development/libraries/openscenegraph/default.nix
index da7e9c755a0..6b446882ba1 100644
--- a/pkgs/development/libraries/openscenegraph/default.nix
+++ b/pkgs/development/libraries/openscenegraph/default.nix
@@ -11,7 +11,7 @@
   curlSupport ? true, curl,
   colladaSupport ? false, opencollada,
   opencascadeSupport ? false, opencascade,
-  ffmpegSupport ? false, ffmpeg_3,
+  ffmpegSupport ? false, ffmpeg,
   nvttSupport ? false, nvidia-texture-tools,
   freetypeSupport ? true, freetype,
   svgSupport ? false, librsvg,
@@ -50,7 +50,7 @@ stdenv.mkDerivation rec {
     ++ lib.optional curlSupport curl
     ++ lib.optional colladaSupport opencollada
     ++ lib.optional opencascadeSupport opencascade
-    ++ lib.optional ffmpegSupport ffmpeg_3
+    ++ lib.optional ffmpegSupport ffmpeg
     ++ lib.optional nvttSupport nvidia-texture-tools
     ++ lib.optional freetypeSupport freetype
     ++ lib.optional svgSupport librsvg
diff --git a/pkgs/development/libraries/py3c/default.nix b/pkgs/development/libraries/py3c/default.nix
index 2a89161ef38..eec051f0cc1 100644
--- a/pkgs/development/libraries/py3c/default.nix
+++ b/pkgs/development/libraries/py3c/default.nix
@@ -11,6 +11,11 @@ stdenv.mkDerivation rec {
     sha256 = "04i2z7hrig78clc59q3i1z2hh24g7z1bfvxznlzxv00d4s57nhpi";
   };
 
+  postPatch = lib.optionalString stdenv.cc.isClang ''
+    substituteInPlace test/setup.py \
+      --replace "'-Werror', " ""
+  '';
+
   makeFlags = [
     "prefix=${placeholder "out"}"
   ];
@@ -26,6 +31,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/encukou/py3c";
     description = "Python 2/3 compatibility layer for C extensions";
     license = licenses.mit;
-    maintainers = with maintainers; [ ajs124 ];
+    maintainers = with maintainers; [ ajs124 dotlambda ];
   };
 }
diff --git a/pkgs/development/libraries/quazip/default.nix b/pkgs/development/libraries/quazip/default.nix
index a12d6cafe4a..4184f3276c0 100644
--- a/pkgs/development/libraries/quazip/default.nix
+++ b/pkgs/development/libraries/quazip/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "quazip";
-  version = "0.9.1";
+  version = "1.1";
 
   src = fetchFromGitHub {
     owner = "stachenov";
     repo = pname;
     rev = "v${version}";
-    sha256 = "11icgwv2xyxhd1hm1add51xv54zwkcqkg85d1xqlgiigvbm196iq";
+    sha256 = "06srglrj6jvy5ngmidlgx03i0d5w91yhi7sf846wql00v8rvhc5h";
   };
 
   buildInputs = [ zlib qtbase ];
diff --git a/pkgs/development/ocaml-modules/ppx_deriving_cmdliner/default.nix b/pkgs/development/ocaml-modules/ppx_deriving_cmdliner/default.nix
new file mode 100644
index 00000000000..412ef9568db
--- /dev/null
+++ b/pkgs/development/ocaml-modules/ppx_deriving_cmdliner/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildDunePackage
+, fetchFromGitHub
+, alcotest
+, cmdliner
+, ppx_deriving
+, ppxlib
+}:
+
+buildDunePackage rec {
+  pname = "ppx_deriving_cmdliner";
+  version = "0.6.0";
+
+  minimumOCamlVersion = "4.08";
+  useDune2 = true;
+
+  src = fetchFromGitHub {
+    owner = "hammerlab";
+    repo = "ppx_deriving_cmdliner";
+    rev = "v${version}";
+    sha256 = "19l32y2wv64d1c7fvln07dg3bkf7wf5inzjxlff7lbabskdbbras";
+  };
+
+  propagatedBuildInputs = [
+    cmdliner
+    ppx_deriving
+    ppxlib
+  ];
+
+  doCheck = true;
+  checkInputs = [
+    alcotest
+  ];
+
+  meta = with lib; {
+    description = "Ppx_deriving plugin for generating command line interfaces from types for OCaml";
+    inherit (src.meta) homepage;
+    license = licenses.asl20;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/pkgs/development/python-modules/autoit-ripper/default.nix b/pkgs/development/python-modules/autoit-ripper/default.nix
new file mode 100644
index 00000000000..2276241d25e
--- /dev/null
+++ b/pkgs/development/python-modules/autoit-ripper/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, lief
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "autoit-ripper";
+  version = "1.0.1";
+  disabled = pythonOlder "3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0mbsrfa72n7y1vkm9jhwhn1z3k45jxrlgx58ia1l2bp6chnnn2zy";
+  };
+
+  propagatedBuildInputs = [
+    lief
+  ];
+
+  postPatch = ''
+    substituteInPlace requirements.txt --replace "lief==0.10.1" "lief>=0.10.1"
+  '';
+
+  # Project has no tests
+  doCheck = false;
+  pythonImportsCheck = [ "autoit_ripper" ];
+
+  meta = with lib; {
+    description = "Python module to extract AutoIt scripts embedded in PE binaries";
+    homepage = "https://github.com/nazywam/AutoIt-Ripper";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/beancount_docverif/default.nix b/pkgs/development/python-modules/beancount_docverif/default.nix
index 0067716b626..44ebb5d94f0 100644
--- a/pkgs/development/python-modules/beancount_docverif/default.nix
+++ b/pkgs/development/python-modules/beancount_docverif/default.nix
@@ -1,4 +1,5 @@
 { lib, buildPythonPackage, fetchPypi, isPy3k
+, setuptools-scm
 , beancount
 , pytest, sh
 }:
@@ -14,6 +15,10 @@ buildPythonPackage rec {
     sha256 = "1kjc0axrxpvm828lqq5m2ikq0ls8xksbmm7312zw867gdx56x5aj";
   };
 
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
   propagatedBuildInputs = [
     beancount
   ];
diff --git a/pkgs/development/python-modules/csvw/default.nix b/pkgs/development/python-modules/csvw/default.nix
index e4bd7ab2b62..cf388409c57 100644
--- a/pkgs/development/python-modules/csvw/default.nix
+++ b/pkgs/development/python-modules/csvw/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "csvw";
-  version = "1.10.1";
+  version = "1.10.2";
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "cldf";
     repo = "csvw";
     rev = "v${version}";
-    sha256 = "1764nfa4frjdd7v6wj35y7prnciaqz57wwygy5zfavl4laxn4nxd";
+    sha256 = "0z0qxlsfxwz1qapxb4d0mz3wkj99d7zi9yrg1cbd2xp7giagb6d4";
   };
 
   patchPhase = ''
diff --git a/pkgs/development/python-modules/flask-httpauth/default.nix b/pkgs/development/python-modules/flask-httpauth/default.nix
index e5d55a2b9b5..ba8e0d0f11e 100644
--- a/pkgs/development/python-modules/flask-httpauth/default.nix
+++ b/pkgs/development/python-modules/flask-httpauth/default.nix
@@ -1,16 +1,22 @@
-{ lib, buildPythonPackage, fetchPypi, flask }:
+{ lib, python, buildPythonPackage, fetchPypi, flask }:
 
 buildPythonPackage rec {
   pname = "Flask-HTTPAuth";
-  version = "4.2.0";
+  version = "4.3.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8c7e49e53ce7dc14e66fe39b9334e4b7ceb8d0b99a6ba1c3562bb528ef9da84a";
+    sha256 = "05j1mckwhgicrlj4j7ni2rhcf9w4i7phll06jbjjyvs3rj1l4q1f";
   };
 
   propagatedBuildInputs = [ flask ];
 
+  pythonImportsCheck = [ "flask_httpauth" ];
+
+  checkPhase = ''
+    ${python.interpreter} -m unittest discover
+  '';
+
   meta = with lib; {
     description = "Extension that provides HTTP authentication for Flask routes";
     homepage = "https://github.com/miguelgrinberg/Flask-HTTPAuth";
diff --git a/pkgs/development/python-modules/flask-restx/default.nix b/pkgs/development/python-modules/flask-restx/default.nix
index f2b7222c3d0..e1de7bf0d3b 100644
--- a/pkgs/development/python-modules/flask-restx/default.nix
+++ b/pkgs/development/python-modules/flask-restx/default.nix
@@ -20,14 +20,14 @@
 
 buildPythonPackage rec {
   pname = "flask-restx";
-  version = "0.2.0";
+  version = "0.3.0";
 
   # Tests not included in PyPI tarball
   src = fetchFromGitHub {
     owner = "python-restx";
     repo = pname;
     rev = version;
-    sha256 = "0xf2vkmdngp9cv9klznizai4byxjcf0iqh1pr4b83nann0jxqwy7";
+    sha256 = "0aj13nd3z71gb8c2kqiaz3f9k7jr0srlvrsx8hpz4nkpki8jiz2s";
   };
 
   propagatedBuildInputs = [ aniso8601 jsonschema flask werkzeug pytz six ]
@@ -45,6 +45,7 @@ buildPythonPackage rec {
   meta = with lib; {
     homepage = "https://flask-restx.readthedocs.io/en/${version}/";
     description = "Fully featured framework for fast, easy and documented API development with Flask";
+    changelog = "https://github.com/python-restx/flask-restx/raw/${version}/CHANGELOG.rst";
     license = licenses.bsd3;
     maintainers = [ maintainers.marsam ];
   };
diff --git a/pkgs/development/python-modules/graphene/default.nix b/pkgs/development/python-modules/graphene/default.nix
index 2839fc337cd..be2cc808eb0 100644
--- a/pkgs/development/python-modules/graphene/default.nix
+++ b/pkgs/development/python-modules/graphene/default.nix
@@ -11,6 +11,7 @@
 , pytest-mock
 , pytz
 , snapshottest
+, fetchpatch
 }:
 
 buildPythonPackage rec {
@@ -24,6 +25,13 @@ buildPythonPackage rec {
     sha256 = "sha256-bVCCLPnV5F8PqLMg3GwcpwpGldrxsU+WryL6gj6y338=";
   };
 
+  # Allow later aniso8601 releases
+  # https://github.com/graphql-python/graphene/pull/1331
+  patches = [ (fetchpatch {
+    url = "https://github.com/graphql-python/graphene/commit/26b16f75b125e35eeb2274b7be503ec29f2e8a45.patch";
+    sha256 = "qm96pNOoxPieEy1CFZpa2Mx010pY3QU/vRyuL0qO3Tk=";
+  }) ];
+
   propagatedBuildInputs = [
     aniso8601
     graphql-core
diff --git a/pkgs/development/python-modules/grpcio-tools/default.nix b/pkgs/development/python-modules/grpcio-tools/default.nix
index 2f4ee5de8d2..0ad0b960ee4 100644
--- a/pkgs/development/python-modules/grpcio-tools/default.nix
+++ b/pkgs/development/python-modules/grpcio-tools/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "grpcio-tools";
-  version = "1.37.0";
+  version = "1.37.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3ec510c1b6bfc32effc639acf9a055e72dab7a7b6757bf72f2132790d6a7cf1c";
+    sha256 = "d775fb07cc6561174d6c86d11727a156c4ade969f7bf5edf623ffe2a428bee4e";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/development/python-modules/karton-autoit-ripper/default.nix b/pkgs/development/python-modules/karton-autoit-ripper/default.nix
new file mode 100644
index 00000000000..d1f79f42a2a
--- /dev/null
+++ b/pkgs/development/python-modules/karton-autoit-ripper/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, autoit-ripper
+, buildPythonPackage
+, fetchFromGitHub
+, karton-core
+, malduck
+, regex
+}:
+
+buildPythonPackage rec {
+  pname = "karton-autoit-ripper";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "CERT-Polska";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0vdsxkbjcr0inpcfjh45gl72ipzklkhgs06fdpkyy9y0cfx3zq7z";
+  };
+
+  propagatedBuildInputs = [
+    autoit-ripper
+    karton-core
+    malduck
+    regex
+  ];
+
+  postPatch = ''
+    substituteInPlace requirements.txt \
+      --replace "autoit-ripper==1.0.0" "autoit-ripper" \
+      --replace "karton.core==4.0.4" "karton-core" \
+      --replace "malduck==3.1.0" "malduck>=3.1.0" \
+      --replace "regex==2020.2.20" "regex>=2020.2.20"
+  '';
+
+  # Project has no tests
+  doCheck = false;
+  pythonImportsCheck = [ "karton.autoit_ripper" ];
+
+  meta = with lib; {
+    description = "AutoIt script ripper for Karton framework";
+    homepage = "https://github.com/CERT-Polska/karton-autoit-ripper";
+    license = with licenses; [ bsd3 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/poppler-qt5/default.nix b/pkgs/development/python-modules/poppler-qt5/default.nix
index 345f092a80f..94d86f7b713 100644
--- a/pkgs/development/python-modules/poppler-qt5/default.nix
+++ b/pkgs/development/python-modules/poppler-qt5/default.nix
@@ -1,44 +1,64 @@
-{ buildPythonPackage, fetchPypi, lib, sip, qtbase, pyqt5, poppler, pkg-config, fetchpatch
-, substituteAll
+{ stdenv
+, lib
+, buildPythonPackage
+, isPy3k
+, fetchPypi
+, pythonPackages
+, sip_5
+, qtbase
+, qmake
+, pyqt5
+, pyqt-builder
+, poppler
+, pkg-config
+, fetchpatch
 }:
 
 buildPythonPackage rec {
   pname = "python-poppler-qt5";
-  version = "0.24.2";
+  version = "21.1.0";
+
+  disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0l69llw1fzwz8y90q0qp9q5pifbrqjjbwii7di54dwghw5fc6w1r";
+    sha256 = "0b82gm4i75q5v19kfbq0h4y0b2vcwr2213zkhxh6l0h45kdndmxd";
   };
 
   patches = [
-    (substituteAll {
-      src = ./poppler-include-dir.patch;
-      poppler_include_dir = "${poppler.dev}/include/poppler";
-    })
+    # Fix for https://github.com/frescobaldi/python-poppler-qt5/issues/43 (from PR #45)
     (fetchpatch {
-      url = "https://github.com/wbsoft/python-poppler-qt5/commit/faf4d1308f89560b0d849671226e3080dfc72e79.patch";
-      sha256 = "18krhh6wzsnpxzlzv02nginb1vralla8ai24zqk10nc4mj6fkj86";
+      url = "https://github.com/frescobaldi/python-poppler-qt5/commit/40e71ad88173d02648bceb2438bc0567e60dacd5.patch";
+      sha256 = "0c93d0k7b1n2s2njl8g92x6vw3z96da1fczah9qx07x08iw8dzi5";
     })
   ];
 
-  setupPyBuildFlags = [
-    "--pyqt-sip-dir ${pyqt5}/share/sip/PyQt5"
-    "--qt-include-dir ${qtbase.dev}/include"
-  ];
+  buildInputs = [ qtbase.dev poppler pyqt-builder ];
+  nativeBuildInputs = [ pkg-config qmake sip_5 ];
+  propagatedBuildInputs = [ pyqt5.dev ];
+
+  format = "pyproject";
+  dontConfigure = true;
+
+  postPatch = ''
+    cat <<EOF >> pyproject.toml
+    sip-include-dirs = ["${pyqt5}/share/sip/PyQt5"]
 
-  buildInputs = [ qtbase.dev poppler ];
-  nativeBuildInputs = [ pkg-config ];
-  propagatedBuildInputs = [ sip pyqt5.dev ];
+    [tool.sip.bindings.Poppler-Qt5]
+    include-dirs = ["${poppler.dev}/include/poppler"]
+    tags = ["${sip_5.platform_tag}"]
+    EOF
+  '';
 
   # no tests, just bindings for `poppler_qt5`
   doCheck = false;
+  pythonImportsCheck = [ "popplerqt5" ];
 
   dontWrapQtApps = true;
 
   meta = with lib; {
-    homepage = "https://github.com/wbsoft/python-poppler-qt5";
-    license = licenses.gpl2;
-    maintainers = with maintainers; [ ];
+    homepage = "https://github.com/frescobaldi/python-poppler-qt5";
+    license = licenses.lgpl21Plus;
+    maintainers = with maintainers; [ eduardosm ];
   };
 }
diff --git a/pkgs/development/python-modules/poppler-qt5/poppler-include-dir.patch b/pkgs/development/python-modules/poppler-qt5/poppler-include-dir.patch
deleted file mode 100644
index 7106c1d6352..00000000000
--- a/pkgs/development/python-modules/poppler-qt5/poppler-include-dir.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/setup.py b/setup.py
-index 59a75b0..0a73268 100644
---- a/setup.py
-+++ b/setup.py
-@@ -169,6 +169,7 @@ class build_ext(build_ext_base):
-                              'Please specify via --pyqt-sip-flags=')
- 
-         self.include_dirs += (self.qt_include_dir,
-+                              '@poppler_include_dir@',
-                               os.path.join(self.qt_include_dir, 'QtCore'),
-                               os.path.join(self.qt_include_dir, 'QtGui'),
-                               os.path.join(self.qt_include_dir, 'QtXml'))
diff --git a/pkgs/development/python-modules/pynmea2/default.nix b/pkgs/development/python-modules/pynmea2/default.nix
index 8bb82fa330a..4a4fbfd4dc6 100644
--- a/pkgs/development/python-modules/pynmea2/default.nix
+++ b/pkgs/development/python-modules/pynmea2/default.nix
@@ -2,15 +2,17 @@
 
 buildPythonPackage rec {
   pname = "pynmea2";
-  version = "1.17.0";
+  version = "1.18.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0x5xrk51dpzsvky1ncikadm80a44a82j3mjjykmhmx7jddc5qh9d";
+    sha256 = "1b94lhpbgvnknb563dlwvs5vkk7w3ma54sj614ynh2dzgqrd6h73";
   };
 
   checkInputs = [ pytestCheckHook ];
 
+  pythonImportsCheck = [ "pynmea2" ];
+
   meta = {
     homepage = "https://github.com/Knio/pynmea2";
     description = "Python library for the NMEA 0183 protcol";
diff --git a/pkgs/development/python-modules/pytmx/default.nix b/pkgs/development/python-modules/pytmx/default.nix
index 17c18a96c73..6d88f4b636b 100644
--- a/pkgs/development/python-modules/pytmx/default.nix
+++ b/pkgs/development/python-modules/pytmx/default.nix
@@ -5,20 +5,26 @@
 
 buildPythonPackage rec {
   pname = "pytmx";
-  version = "3.24.0";
+  version = "3.25";
 
   disabled = isPy27;
 
   src = fetchFromGitHub {
-    # The release was not git tagged.
     owner = "bitcraft";
     repo = "PyTMX";
-    rev = "eb96efea30d57b731654b2a167d86b8b553b147d";
-    sha256 = "1g1j4w75zw76p5f8m5v0hdigdlva2flf0ngyk8nvqcwzcl5vq5wc";
+    rev = version;
+    sha256 = "0v07zhvzvl2qcqhjzgfzm8hgayq38gaqcxxkyhlq9n0hlk93nm97";
   };
 
   propagatedBuildInputs = [ pygame pyglet pysdl2 six ];
 
+  pythonImportsCheck = [
+    "pytmx.pytmx"
+    "pytmx.util_pygame"
+    "pytmx.util_pyglet"
+    "pytmx.util_pysdl2"
+  ];
+
   checkPhase = ''
     # Change into the test directory due to a relative resource path.
     cd tests/pytmx
@@ -28,7 +34,7 @@ buildPythonPackage rec {
   meta = with lib; {
     homepage = "https://github.com/bitcraft/PyTMX";
     description = "Python library to read Tiled Map Editor's TMX maps";
-    license = licenses.lgpl3;
+    license = licenses.lgpl3Plus;
     maintainers = with maintainers; [ oxzi ];
   };
 }
diff --git a/pkgs/development/python-modules/pywizlight/default.nix b/pkgs/development/python-modules/pywizlight/default.nix
index ba41712c236..1461a705302 100644
--- a/pkgs/development/python-modules/pywizlight/default.nix
+++ b/pkgs/development/python-modules/pywizlight/default.nix
@@ -9,13 +9,13 @@
 
 buildPythonPackage rec {
   pname = "pywizlight";
-  version = "0.4.6";
+  version = "0.4.7";
 
   src = fetchFromGitHub {
     owner = "sbidy";
     repo = pname;
-    rev = "v${version}";
-    sha256 = "sha256-BCHLd1SbdHWrl7dcLD69t2K5Sa1WtGpMxTmMyDWl9u4=";
+    rev = version;
+    sha256 = "0zagdb90bxmf06fzpljhqgsgzg36zc1yhdibacfrx8bmnx3l657h";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/tools/ecpdap/default.nix b/pkgs/development/tools/ecpdap/default.nix
index dbb9a2405b0..46b5945fb94 100644
--- a/pkgs/development/tools/ecpdap/default.nix
+++ b/pkgs/development/tools/ecpdap/default.nix
@@ -2,26 +2,26 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "ecpdap";
-  version = "0.1.5";
+  version = "0.1.6";
 
   src = fetchFromGitHub {
     owner = "adamgreig";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1z8w37i6wjz6cr453md54ip21y26605vrx4vpq5wwd11mfvc1jsg";
+    sha256 = "1va96hxm22a2lfy141x1sv5f5g8f6mp965an4jsff9qzi55kfv2g";
   };
 
-  # The lock file was not up to date with cargo.toml for this release
-  #
-  # This patch is the lock file after running `cargo update`
-  cargoPatches = [ ./lock-update.patch ];
-
-  cargoSha256 = "08xcnvbxm508v03b3hmz71mpa3yd8lamvazxivp6qsv46ri163mn";
+  cargoSha256 = "1dk6x2f36c546qr415kzmqr2r4550iwdmj4chrb46p3hr64jddhd";
 
   nativeBuildInputs = [ pkg-config ];
 
   buildInputs = [ libusb1 ];
 
+  postInstall = ''
+    mkdir -p $out/etc/udev/rules.d
+    cp drivers/*.rules $out/etc/udev/rules.d
+  '';
+
   meta = with lib; {
     description = "A tool to program ECP5 FPGAs";
     longDescription = ''
diff --git a/pkgs/development/tools/ecpdap/lock-update.patch b/pkgs/development/tools/ecpdap/lock-update.patch
deleted file mode 100644
index f57c1922ad1..00000000000
--- a/pkgs/development/tools/ecpdap/lock-update.patch
+++ /dev/null
@@ -1,345 +0,0 @@
-diff --git a/Cargo.lock b/Cargo.lock
-index 91f7e0c..1610002 100644
---- a/Cargo.lock
-+++ b/Cargo.lock
-@@ -26,9 +26,9 @@ dependencies = [
- 
- [[package]]
- name = "anyhow"
--version = "1.0.37"
-+version = "1.0.40"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "ee67c11feeac938fae061b232e38e0b6d94f97a9df10e6271319325ac4c56a86"
-+checksum = "28b2cd92db5cbd74e8e5028f7e27dd7aa3090e89e4f2a197cc7c8dfb69c7063b"
- 
- [[package]]
- name = "atty"
-@@ -49,15 +49,9 @@ checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
- 
- [[package]]
- name = "cc"
--version = "1.0.66"
-+version = "1.0.67"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "4c0496836a84f8d0495758516b8621a622beb77c0fed418570e50764093ced48"
--
--[[package]]
--name = "cfg-if"
--version = "0.1.10"
--source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
-+checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd"
- 
- [[package]]
- name = "cfg-if"
-@@ -82,9 +76,9 @@ dependencies = [
- 
- [[package]]
- name = "console"
--version = "0.14.0"
-+version = "0.14.1"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "7cc80946b3480f421c2f17ed1cb841753a371c7c5104f51d507e13f532c856aa"
-+checksum = "3993e6445baa160675931ec041a5e03ca84b9c6e32a056150d3aa2bdda0a1f45"
- dependencies = [
-  "encode_unicode",
-  "lazy_static",
-@@ -101,14 +95,14 @@ version = "1.2.1"
- source = "registry+https://github.com/rust-lang/crates.io-index"
- checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a"
- dependencies = [
-- "cfg-if 1.0.0",
-+ "cfg-if",
- ]
- 
- [[package]]
- name = "derivative"
--version = "2.1.1"
-+version = "2.2.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "cb582b60359da160a9477ee80f15c8d784c477e69c217ef2cdd4169c24ea380f"
-+checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
- dependencies = [
-  "proc-macro2",
-  "quote",
-@@ -117,7 +111,7 @@ dependencies = [
- 
- [[package]]
- name = "ecpdap"
--version = "0.1.4"
-+version = "0.1.5"
- dependencies = [
-  "anyhow",
-  "clap",
-@@ -153,11 +147,11 @@ dependencies = [
- 
- [[package]]
- name = "filetime"
--version = "0.2.13"
-+version = "0.2.14"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "0c122a393ea57648015bf06fbd3d372378992e86b9ff5a7a497b076a28c79efe"
-+checksum = "1d34cfa13a63ae058bfa601fe9e313bbdb3746427c1459185464ce0fcf62e1e8"
- dependencies = [
-- "cfg-if 1.0.0",
-+ "cfg-if",
-  "libc",
-  "redox_syscall",
-  "winapi",
-@@ -165,9 +159,9 @@ dependencies = [
- 
- [[package]]
- name = "hermit-abi"
--version = "0.1.17"
-+version = "0.1.18"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8"
-+checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c"
- dependencies = [
-  "libc",
- ]
-@@ -206,9 +200,9 @@ dependencies = [
- 
- [[package]]
- name = "jep106"
--version = "0.2.4"
-+version = "0.2.5"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "f57cd08ee4fbc8043949150a59e34ea5f2afeb172f875db9607689e48600c653"
-+checksum = "939876d20519325db0883757e29e9858ee02919d0f03e43c74f69296caa314f4"
- dependencies = [
-  "serde",
- ]
-@@ -221,33 +215,35 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
- 
- [[package]]
- name = "libc"
--version = "0.2.81"
-+version = "0.2.94"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "1482821306169ec4d07f6aca392a4681f66c75c9918aa49641a2595db64053cb"
-+checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e"
- 
- [[package]]
- name = "libflate"
--version = "1.0.3"
-+version = "1.1.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "389de7875e06476365974da3e7ff85d55f1972188ccd9f6020dd7c8156e17914"
-+checksum = "6d87eae36b3f680f7f01645121b782798b56ef33c53f83d1c66ba3a22b60bfe3"
- dependencies = [
-  "adler32",
-  "crc32fast",
-  "libflate_lz77",
-- "rle-decode-fast",
- ]
- 
- [[package]]
- name = "libflate_lz77"
--version = "1.0.0"
-+version = "1.1.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "3286f09f7d4926fc486334f28d8d2e6ebe4f7f9994494b6dab27ddfad2c9b11b"
-+checksum = "39a734c0493409afcd49deee13c006a04e3586b9761a03543c6272c9c51f2f5a"
-+dependencies = [
-+ "rle-decode-fast",
-+]
- 
- [[package]]
- name = "libusb1-sys"
--version = "0.4.3"
-+version = "0.4.4"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "5e3b8385bdc8931a82a0865a3a7285e2c28e41287824dc92c7724b7759a0c685"
-+checksum = "be241693102a24766d0b8526c8988771edac2842630d7e730f8e9fbc014f3703"
- dependencies = [
-  "cc",
-  "libc",
-@@ -259,11 +255,11 @@ dependencies = [
- 
- [[package]]
- name = "log"
--version = "0.4.11"
-+version = "0.4.14"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b"
-+checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
- dependencies = [
-- "cfg-if 0.1.10",
-+ "cfg-if",
- ]
- 
- [[package]]
-@@ -327,9 +323,9 @@ dependencies = [
- 
- [[package]]
- name = "proc-macro2"
--version = "1.0.24"
-+version = "1.0.26"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71"
-+checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec"
- dependencies = [
-  "unicode-xid",
- ]
-@@ -342,36 +338,38 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
- 
- [[package]]
- name = "quote"
--version = "1.0.8"
-+version = "1.0.9"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "991431c3519a3f36861882da93630ce66b52918dcf1b8e2fd66b397fc96f28df"
-+checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7"
- dependencies = [
-  "proc-macro2",
- ]
- 
- [[package]]
- name = "redox_syscall"
--version = "0.1.57"
-+version = "0.2.6"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
-+checksum = "8270314b5ccceb518e7e578952f0b72b88222d02e8f77f5ecf7abbb673539041"
-+dependencies = [
-+ "bitflags",
-+]
- 
- [[package]]
- name = "regex"
--version = "1.4.2"
-+version = "1.4.6"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "38cf2c13ed4745de91a5eb834e11c00bcc3709e773173b2ce4c56c9fbde04b9c"
-+checksum = "2a26af418b574bd56588335b3a3659a65725d4e636eb1016c2f9e3b38c7cc759"
- dependencies = [
-  "aho-corasick",
-  "memchr",
-  "regex-syntax",
-- "thread_local",
- ]
- 
- [[package]]
- name = "regex-syntax"
--version = "0.6.21"
-+version = "0.6.23"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189"
-+checksum = "24d5f089152e60f62d28b835fbff2cd2e8dc0baf1ac13343bef92ab7eed84548"
- 
- [[package]]
- name = "rle-decode-fast"
-@@ -391,18 +389,18 @@ dependencies = [
- 
- [[package]]
- name = "serde"
--version = "1.0.118"
-+version = "1.0.125"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "06c64263859d87aa2eb554587e2d23183398d617427327cf2b3d0ed8c69e4800"
-+checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171"
- dependencies = [
-  "serde_derive",
- ]
- 
- [[package]]
- name = "serde_derive"
--version = "1.0.118"
-+version = "1.0.125"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "c84d3526699cd55261af4b941e4e725444df67aa4f9e6a3564f18030d12672df"
-+checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d"
- dependencies = [
-  "proc-macro2",
-  "quote",
-@@ -431,9 +429,9 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
- 
- [[package]]
- name = "syn"
--version = "1.0.57"
-+version = "1.0.71"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "4211ce9909eb971f111059df92c45640aad50a619cf55cd76476be803c4c68e6"
-+checksum = "ad184cc9470f9117b2ac6817bfe297307418819ba40552f9b3846f05c33d5373"
- dependencies = [
-  "proc-macro2",
-  "quote",
-@@ -442,13 +440,12 @@ dependencies = [
- 
- [[package]]
- name = "tar"
--version = "0.4.30"
-+version = "0.4.33"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "489997b7557e9a43e192c527face4feacc78bfbe6eed67fd55c4c9e381cba290"
-+checksum = "c0bcfbd6a598361fda270d82469fff3d65089dc33e175c9a131f7b4cd395f228"
- dependencies = [
-  "filetime",
-  "libc",
-- "redox_syscall",
-  "xattr",
- ]
- 
-@@ -463,9 +460,9 @@ dependencies = [
- 
- [[package]]
- name = "terminal_size"
--version = "0.1.15"
-+version = "0.1.16"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "4bd2d183bd3fac5f5fe38ddbeb4dc9aec4a39a9d7d59e7491d900302da01cbe1"
-+checksum = "86ca8ced750734db02076f44132d802af0b33b09942331f4459dde8636fd2406"
- dependencies = [
-  "libc",
-  "winapi",
-@@ -482,33 +479,24 @@ dependencies = [
- 
- [[package]]
- name = "thiserror"
--version = "1.0.23"
-+version = "1.0.24"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "76cc616c6abf8c8928e2fdcc0dbfab37175edd8fb49a4641066ad1364fdab146"
-+checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e"
- dependencies = [
-  "thiserror-impl",
- ]
- 
- [[package]]
- name = "thiserror-impl"
--version = "1.0.23"
-+version = "1.0.24"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "9be73a2caec27583d0046ef3796c3794f868a5bc813db689eed00c7631275cd1"
-+checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0"
- dependencies = [
-  "proc-macro2",
-  "quote",
-  "syn",
- ]
- 
--[[package]]
--name = "thread_local"
--version = "1.0.1"
--source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14"
--dependencies = [
-- "lazy_static",
--]
--
- [[package]]
- name = "toml"
- version = "0.5.8"
-@@ -532,9 +520,9 @@ checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564"
- 
- [[package]]
- name = "vcpkg"
--version = "0.2.11"
-+version = "0.2.12"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "b00bca6106a5e23f3eee943593759b7fcddb00554332e856d990c893966879fb"
-+checksum = "cbdbff6266a24120518560b5dc983096efb98462e51d0d68169895b237be3e5d"
- 
- [[package]]
- name = "vec_map"
diff --git a/pkgs/development/tools/electron/default.nix b/pkgs/development/tools/electron/default.nix
index 077d6c74c8b..a3f58ae827e 100644
--- a/pkgs/development/tools/electron/default.nix
+++ b/pkgs/development/tools/electron/default.nix
@@ -86,22 +86,22 @@ rec {
     headers = "0yx8mkrm15ha977hzh7g2sc5fab9sdvlk1bk3yxignhxrqqbw885";
   };
 
-  electron_10 = mkElectron "10.4.3" {
-    x86_64-linux = "48793fc6c6d3bfb8df81cd29f6c52e68c8c6b901693c6ba4ed505799fa673e9f";
-    x86_64-darwin = "28cbacf51e0528e0d4ba30a2c56efd6a8e7f836104786733aae0c5fc99dc2615";
-    i686-linux = "b9b7fd9b91630350dafe97a31c918f941ab15b044f0b4e9b2a705482447fe78f";
-    armv7l-linux = "b1e1b4d0620eae647915c95d21656d21c00efe89f44198938d9fd9fba045e39c";
-    aarch64-linux = "aa9177becf787920cef4cde27a6ed08e2e23976678162a3cd6b77615b1582c05";
-    headers = "0phv08myxq226blrqzg3fza3mh3ivgfmcja98b7377pc3x7bv76g";
+  electron_10 = mkElectron "10.4.4" {
+    x86_64-linux = "e82d347ff4753fd4296550e403390c7a9c448d150ea6bb05bd245fd43ac5a708";
+    x86_64-darwin = "b8f01dedbd81c58e1dc0fafd316e4c1be07681f7e6d42d3f6f3947cf78d9a8fa";
+    i686-linux = "2e7847c902e174496e152030932a921ca1cfb2ffcb556e2a01b08d8235eb333d";
+    armv7l-linux = "303c246816bff2dc7aeb26d37d99fe82e4bbe484e3e96f42731f6350498b1af2";
+    aarch64-linux = "21ba3370b01870fc498d7e180d034a3e3b59a84af231d2dcd82984d6d09fd5da";
+    headers = "0qxzsycpdq1g8a2yaw7g43da1f8ijpbhj97vvxza8nnvxiay5apf";
   };
 
-  electron_11 = mkElectron "11.4.3" {
-    x86_64-linux = "222e7aa51d5516796d532f784c574f07315bad4bf29efb0ce687014f93ba5fa5";
-    x86_64-darwin = "6cccbaf8dca7eb3819b0ac3044686f6705c5d51c88ee1361d8573c2b83c8dc0a";
-    i686-linux = "1910729fd6088e9c914db9fdd6c42ce6747fcb048947dd83fa2cdf564c786353";
-    armv7l-linux = "e0e1375bdb79a6917467490683e49bb59da9260b73d7b710a5e4e4535c1c5e80";
-    aarch64-linux = "9fb287ed8bcc7782775bd615fe1c31db4a8b6d548209fd15ef5312ac72a04d07";
-    headers = "00gln9jlb621gvxx1z7s212wakjbdigdqv02vx1pjvkg62aazg8j";
+  electron_11 = mkElectron "11.4.4" {
+    x86_64-linux = "154ae71e674b37b6cb5ec56e0f569435cb9303a5b0c0608bd2e1d026803be1a5";
+    x86_64-darwin = "783962e25433178a1e41b895dbbebc7b82efbe819dbd08c9314d2f4547c73e05";
+    i686-linux = "fcfeba63e490648156f01bbe51f27123f93762713f6ab5e4433dc9c232708a25";
+    armv7l-linux = "3b98dabbce5a5a8ba66d2f909174b792eeccddd95fd4396a596130f6817ec0d3";
+    aarch64-linux = "cf886b382f4e3815487ee1403d4bb6ff434ecd9625e61c9ecf082f482c88617e";
+    headers = "1wjcygxy6lvmf1lw857rcd499jk8103nvld0q3jj4r90gwbdhfi3";
   };
 
   electron_12 = mkElectron "12.0.5" {
diff --git a/pkgs/development/tools/frugal/default.nix b/pkgs/development/tools/frugal/default.nix
new file mode 100644
index 00000000000..e76b62d45cb
--- /dev/null
+++ b/pkgs/development/tools/frugal/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "frugal";
+  version = "3.14.3";
+
+  src = fetchFromGitHub {
+    owner = "Workiva";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-zns2XcydY4xxgF8FB6eje0pAt0DZnFOIAqXaSX0xoMg=";
+  };
+
+  subPackages = [ "." ];
+
+  vendorSha256 = "sha256-hyupBMRKuw77SJNIk3mEUixV0LV5mEmZx8M70qGmYJY=";
+
+  meta = with lib; {
+    description = "Thrift improved";
+    homepage = "https://github.com/Workiva/frugal";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ diogox ];
+  };
+}
diff --git a/pkgs/development/tools/go-tools/default.nix b/pkgs/development/tools/go-tools/default.nix
index 2bf5093e5e3..00cd19863d6 100644
--- a/pkgs/development/tools/go-tools/default.nix
+++ b/pkgs/development/tools/go-tools/default.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "go-tools";
-  version = "2020.2.3";
+  version = "2020.2.4";
 
   src = fetchFromGitHub {
     owner = "dominikh";
     repo = "go-tools";
     rev = version;
-    sha256 = "17li8jbw3cpn59kpcl3j3r2an4wkx3fc81xn0j4xgbjpkxh9493n";
+    sha256 = "sha256-yFZ01bfejbq8zQ52DbcomBcHnB6H5Ds4MJP93xQ2/jU=";
   };
 
-  vendorSha256 = "081p008sb3lkc8j6sa6n42qi04za4a631kihrd4ca6aigwkgl3ak";
+  vendorSha256 = "sha256-Uw36Jn9RGcVIyzDOMIwi6hMQsSDWKG0kYpOOpREANyA=";
 
   doCheck = false;
 
diff --git a/pkgs/development/tools/knightos/mkrom/default.nix b/pkgs/development/tools/knightos/mkrom/default.nix
index 2e067e92d91..21caa5b8b32 100644
--- a/pkgs/development/tools/knightos/mkrom/default.nix
+++ b/pkgs/development/tools/knightos/mkrom/default.nix
@@ -1,25 +1,27 @@
-{ lib, stdenv, fetchFromGitHub, cmake, libxslt, asciidoc }:
+{ lib, stdenv, fetchFromGitHub, libxslt, asciidoc }:
 
 stdenv.mkDerivation rec {
   pname = "mkrom";
-  version = "1.0.3";
+  version = "1.0.4";
 
   src = fetchFromGitHub {
     owner = "KnightOS";
     repo = "mkrom";
     rev = version;
-    sha256 = "0xgvanya40mdwy35j94j61hsp80dm5b440iphmr5ng3kjgchvpx2";
+    sha256 = "sha256-YFrh0tOGiM90uvU9ZWopW1+9buHDQtetuOtPDSYYaXw=";
   };
 
   strictDeps = true;
-  nativeBuildInputs = [ asciidoc cmake libxslt.bin ];
+  nativeBuildInputs = [ asciidoc libxslt.bin ];
 
-  hardeningDisable = [ "format" ];
+  installFlags = [ "DESTDIR=$(out)" ];
+  installTargets = [ "install" "install_man" ];
 
   meta = with lib; {
     homepage    = "https://knightos.org/";
     description = "Packages KnightOS distribution files into a ROM";
     license     = licenses.mit;
     maintainers = with maintainers; [ siraben ];
+    platforms   = platforms.all;
   };
 }
diff --git a/pkgs/development/tools/knightos/scas/default.nix b/pkgs/development/tools/knightos/scas/default.nix
index ceb8212cf7f..255ecf798d8 100644
--- a/pkgs/development/tools/knightos/scas/default.nix
+++ b/pkgs/development/tools/knightos/scas/default.nix
@@ -2,14 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "scas";
-
-  version = "0.5.3";
+  version = "0.5.5";
 
   src = fetchFromGitHub {
     owner = "KnightOS";
     repo = "scas";
     rev = version;
-    sha256 = "0z6r07cl92kq860ddas5p88l990ih9cfqlzy5y4mk5hrmjzya60j";
+    sha256 = "sha256-JGQE+orVDKKJsTt8sIjPX+3yhpZkujISroQ6g19+MzU=";
   };
 
   cmakeFlags = [ "-DSCAS_LIBRARY=1" ];
diff --git a/pkgs/development/tools/krankerl/default.nix b/pkgs/development/tools/krankerl/default.nix
index b771fe6bfc5..8697f81a9da 100644
--- a/pkgs/development/tools/krankerl/default.nix
+++ b/pkgs/development/tools/krankerl/default.nix
@@ -12,16 +12,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "krankerl";
-  version = "0.13.0";
+  version = "0.13.1";
 
   src = fetchFromGitHub {
     owner = "ChristophWurst";
     repo = "krankerl";
     rev = "v${version}";
-    sha256 = "1gp8b2m8kcz2f16zv9xwv4n1zki6imvz9z31kixh6amdj6fif3d1";
+    sha256 = "sha256-uIFcWHdW8887CDkFxZznh9akYs+vxsE9Bc9g1hKi7Kc=";
   };
 
-  cargoSha256 = "sha256:01hcxs14wwhhvr08x816wa3jcm4zvm6g7vais793cgijipyv00rc";
+  cargoSha256 = "sha256-6joHwz0HIVbta8ALvsJLMvmeDh9IFPR4Cx36H63MliI=";
 
   nativeBuildInputs = [
     pkg-config
diff --git a/pkgs/development/tools/misc/hydra/default.nix b/pkgs/development/tools/misc/hydra/default.nix
index 40a480a0909..7bed3b5d202 100644
--- a/pkgs/development/tools/misc/hydra/default.nix
+++ b/pkgs/development/tools/misc/hydra/default.nix
@@ -2,12 +2,12 @@
 
 {
   hydra-unstable = callPackage ./common.nix {
-    version = "2021-03-29";
+    version = "2021-04-29";
     src = fetchFromGitHub {
       owner = "NixOS";
       repo = "hydra";
-      rev = "9bb04ed97af047968196bad1728f927f7a6d905f";
-      sha256 = "sha256-gN/zNI2hGDMnYUjeGnU7SAuXP4KCmNqG+AYOVfINaQE=";
+      rev = "6047b1dd04d44acff9343b6b971ab609b73099d5";
+      sha256 = "sha256-E7JOHhSd4gIzE6FvSZVMxZE9WagbBkrfZVoibkanaYE=";
     };
     nix = nixFlakes;
 
diff --git a/pkgs/development/tools/rgp/default.nix b/pkgs/development/tools/rgp/default.nix
index 3cfd608e225..7b49a83b1cc 100644
--- a/pkgs/development/tools/rgp/default.nix
+++ b/pkgs/development/tools/rgp/default.nix
@@ -19,15 +19,15 @@
 }:
 
 let
-  buildNum = "2020-11-19-376";
+  buildNum = "2021-03-31-696";
 in
 stdenv.mkDerivation rec {
   pname = "rgp";
-  version = "1.9";
+  version = "1.10";
 
   src = fetchurl {
     url = "https://gpuopen.com/download/radeon-developer-tool-suite/RadeonDeveloperToolSuite-${buildNum}.tgz";
-    sha256 = "f71ibuMerd0SmXKSDjaTj7xtyy1dWzkZ5s0PlGtQ1+k=";
+    sha256 = "1GUV75KpYbeq7KkE86QqTfGnf/t3VEgviaAsbg/LWJI=";
   };
 
   nativeBuildInputs = [ makeWrapper autoPatchelfHook ];
@@ -59,6 +59,9 @@ stdenv.mkDerivation rec {
     mkdir -p $out/opt/rgp $out/bin
     cp -r . $out/opt/rgp/
 
+    chmod +x $out/opt/rgp/scripts/*
+    patchShebangs $out/opt/rgp/scripts
+
     for prog in RadeonDeveloperPanel RadeonDeveloperService RadeonDeveloperServiceCLI RadeonGPUAnalyzer RadeonGPUProfiler rga rtda; do
       # makeWrapper is needed so that executables are started from the opt
       # directory, where qt.conf and other tools are
diff --git a/pkgs/development/tools/rust/cargo-msrv/default.nix b/pkgs/development/tools/rust/cargo-msrv/default.nix
new file mode 100644
index 00000000000..32ce1464f82
--- /dev/null
+++ b/pkgs/development/tools/rust/cargo-msrv/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, nix-update-script
+, pkg-config
+, openssl
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-msrv";
+  version = "0.4.0";
+
+  src = fetchFromGitHub {
+    owner = "foresterre";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1ynv5d2rxlc1gzq93v8qjyl5063w7q42g9m95250yh2lmf9hdj5i";
+  };
+
+  cargoSha256 = "03rphdps17gzcmf8n5w14x5i5rjnfznsl150s3cz5vzhbmnlpszf";
+
+  passthru = {
+    updateScript = nix-update-script {
+      attrPath = pname;
+    };
+  };
+
+  # Integration tests fail
+  doCheck = false;
+
+  buildInputs = [ openssl ];
+
+  nativeBuildInputs = [ pkg-config ];
+
+  meta = with lib; {
+    description = "Cargo subcommand \"msrv\": assists with finding your minimum supported Rust version (MSRV)";
+    homepage = "https://github.com/foresterre/cargo-msrv";
+    license = with licenses; [ asl20 /* or */ mit ];
+    maintainers = with maintainers; [ otavio ];
+  };
+}
diff --git a/pkgs/development/tools/rust/cargo-rr/default.nix b/pkgs/development/tools/rust/cargo-rr/default.nix
new file mode 100644
index 00000000000..47d58e9b92a
--- /dev/null
+++ b/pkgs/development/tools/rust/cargo-rr/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, nix-update-script
+, makeWrapper
+, rr
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-rr";
+  version = "0.1.3";
+
+  src = fetchFromGitHub {
+    owner = "danielzfranklin";
+    repo = pname;
+    rev = version;
+    sha256 = "01m8fdz9as2fxnzs9csvbc76qxzbb98a66dh7w4a5q855v38g0zy";
+  };
+
+  cargoSha256 = "0fjs76n6bbbv83s213h2dgsszgxy4hbjsclyk9m81b3bfbmmb9sa";
+
+  passthru = {
+    updateScript = nix-update-script {
+      attrPath = pname;
+    };
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  postInstall = ''
+    wrapProgram $out/bin/cargo-rr --prefix PATH : ${lib.makeBinPath [ rr ]}
+  '';
+
+  meta = with lib; {
+    description = "Cargo subcommand \"rr\": a light wrapper around rr, the time-travelling debugger";
+    homepage = "https://github.com/danielzfranklin/cargo-rr";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ otavio ];
+  };
+}
diff --git a/pkgs/development/web/cypress/default.nix b/pkgs/development/web/cypress/default.nix
index e05a320f63b..a4046c37abe 100644
--- a/pkgs/development/web/cypress/default.nix
+++ b/pkgs/development/web/cypress/default.nix
@@ -9,6 +9,8 @@ stdenv.mkDerivation rec {
     sha256 = "1m52v6hhblrjji9c5885bn5qq0xlaw36krbmqfac7fhgsxmkxd2h";
   };
 
+  passthru.updateScript = ./update.sh;
+
   # don't remove runtime deps
   dontPatchELF = true;
 
diff --git a/pkgs/development/web/cypress/update.sh b/pkgs/development/web/cypress/update.sh
new file mode 100755
index 00000000000..f8389b517c3
--- /dev/null
+++ b/pkgs/development/web/cypress/update.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p common-updater-scripts curl jq
+
+set -euo pipefail
+
+basedir="$(git rev-parse --show-toplevel)"
+version="$(curl -sL https://cdn.cypress.io/desktop/ | jq '.version' --raw-output)"
+
+cd "$basedir"
+update-source-version cypress "$version"
diff --git a/pkgs/development/web/nodejs/nodejs.nix b/pkgs/development/web/nodejs/nodejs.nix
index 09d15901ada..0e52dd5f804 100644
--- a/pkgs/development/web/nodejs/nodejs.nix
+++ b/pkgs/development/web/nodejs/nodejs.nix
@@ -142,6 +142,7 @@ in
       license = licenses.mit;
       maintainers = with maintainers; [ goibhniu gilligan cko marsam ];
       platforms = platforms.linux ++ platforms.darwin;
+      mainProgram = "node";
     };
 
     passthru.python = python; # to ensure nodeEnv uses the same version
diff --git a/pkgs/games/methane/default.nix b/pkgs/games/methane/default.nix
new file mode 100644
index 00000000000..17c9dc42567
--- /dev/null
+++ b/pkgs/games/methane/default.nix
@@ -0,0 +1,70 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, pkg-config
+, SDL2
+, SDL2_image
+, SDL2_mixer
+, fontconfig
+, freealut
+, freeglut
+, gettext
+, libGL
+, libGLU
+, openal
+, quesoglc
+, clanlib
+, libXrender
+, libmikmod
+, alsaLib
+}:
+
+stdenv.mkDerivation rec {
+  pname = "methane";
+  version = "2.0.1";
+
+  src = fetchFromGitHub {
+    repo = "methane";
+    owner = "rombust";
+    rev = "v${version}";
+    sha256 = "sha256-STS2+wfZ8E1jpr0PYQOBQsztxhJU0Dt3IhWBE3sjdWE=";
+  };
+
+  nativeBuildInputs = [
+    gettext
+    pkg-config
+  ];
+  buildInputs = [
+    SDL2
+    SDL2_image
+    SDL2_mixer
+    fontconfig
+    freealut
+    freeglut
+    libGL
+    libGLU
+    openal
+    quesoglc
+    clanlib
+    libXrender
+    libmikmod
+    alsaLib
+  ];
+
+  installPhase  = ''
+    runHook preInstall
+    mkdir -p $out/bin/ $out/share/methane/ $out/share/docs/
+    cp methane $out/bin
+    cp -r resources/* $out/share/methane/.
+    cp -r docs/* $out/share/docs/.
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/rombust/methane";
+    description = "A clone of Taito's Bubble Bobble arcade game released for Amiga in 1993 by Apache Software";
+    license = licenses.gpl2Only;
+    maintainers = with maintainers; [ nixinator ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/games/osu-lazer/default.nix b/pkgs/games/osu-lazer/default.nix
index 81f50e96822..7dd9235b69d 100644
--- a/pkgs/games/osu-lazer/default.nix
+++ b/pkgs/games/osu-lazer/default.nix
@@ -16,13 +16,13 @@ let
 
 in stdenv.mkDerivation rec {
   pname = "osu-lazer";
-  version = "2021.410.0";
+  version = "2021.502.0";
 
   src = fetchFromGitHub {
     owner = "ppy";
     repo = "osu";
     rev = version;
-    sha256 = "twKg9iZdY+zgwEQeHMOlRZKXxAHic7GnoqH0jOdW7fw=";
+    sha256 = "IOneihYQry0pRXYaxZuVLIj2Ydei//khvpqwiJoakZ8=";
   };
 
   patches = [ ./bypass-tamper-detection.patch ];
diff --git a/pkgs/games/osu-lazer/deps.nix b/pkgs/games/osu-lazer/deps.nix
index f30ac9b13f4..9c839ec376e 100644
--- a/pkgs/games/osu-lazer/deps.nix
+++ b/pkgs/games/osu-lazer/deps.nix
@@ -26,8 +26,8 @@
   })
   (fetchNuGet {
     name = "Humanizer";
-    version = "2.8.26";
-    sha256 = "11kddzyzqpq9gkz0hmrblq494nh86va6wxx6z89xi6w1f4vj15ak";
+    version = "2.9.9";
+    sha256 = "07ql79qz4m7cdr6g0f0dxjywrv70xzpzz45gch73x1ad4vwc5n4m";
   })
   (fetchNuGet {
     name = "Humanizer.Core";
@@ -36,228 +36,243 @@
   })
   (fetchNuGet {
     name = "Humanizer.Core";
-    version = "2.8.26";
-    sha256 = "1v8xd12yms4qq1md4vh6faxicmqrvahqdd7sdkyzrphab9v44nsm";
+    version = "2.9.9";
+    sha256 = "05sn5l0qg5bi8qxqxlch88zlk79z9pbh6jwln7b3yxnp4hkj4kvm";
   })
   (fetchNuGet {
     name = "Humanizer.Core.af";
-    version = "2.8.26";
-    sha256 = "0znrq4frlkq1qi20301hlzxa6mdc275fa1i1a1i8ldgk9cjq94k9";
+    version = "2.9.9";
+    sha256 = "0l51ll73gjjarpyknj81v8f64mg0f0zlc7q3sgcz4fkmj6n0wxb3";
   })
   (fetchNuGet {
     name = "Humanizer.Core.ar";
-    version = "2.8.26";
-    sha256 = "1hi7mln48p1nmxlgdq725s4cvla9nlkvbmrsql1rfjjlsy8hn6n7";
+    version = "2.9.9";
+    sha256 = "1akrcrxl01phzp1cyhknwcmghhmr808dzv9aj8vzjmyq67p8mnja";
   })
   (fetchNuGet {
     name = "Humanizer.Core.az";
-    version = "2.8.26";
-    sha256 = "0av7ycrqwvmikqia3z3qkp9967zilrhayny17zkm0d0mnjq62vs6";
+    version = "2.9.9";
+    sha256 = "0jsxjvhmgwngx5b1yki5g6ns7yhzn3m5invzlnl79dh09krx9pg4";
   })
   (fetchNuGet {
     name = "Humanizer.Core.bg";
-    version = "2.8.26";
-    sha256 = "13j6zk2cmk7a119azxlpjhfwykrzk0vkf5a799fb2fzkvhnj4hkg";
+    version = "2.9.9";
+    sha256 = "0l32vi52qkvx267qnykid5965199h6rcy5r04gmkv3lg2ydds0ig";
   })
   (fetchNuGet {
     name = "Humanizer.Core.bn-BD";
-    version = "2.8.26";
-    sha256 = "0h619sksggfi7dnaycz6bj9aiqdgn0d8dpgjgdl73crw52lr70p9";
+    version = "2.9.9";
+    sha256 = "1yivbxcxh15jgy8j5fzrd40c9k75wmcd9wdy1333zwcyrwqzpx7v";
   })
   (fetchNuGet {
     name = "Humanizer.Core.cs";
-    version = "2.8.26";
-    sha256 = "11bh3k15388bi5wizaihnwqk7wb4n7q636fqjllwdhjggqrsc3f6";
+    version = "2.9.9";
+    sha256 = "05ysribnj8b2q2fcm33lcgz7mcdgx5q53w6vihyjc5s6zmlfqqfr";
   })
   (fetchNuGet {
     name = "Humanizer.Core.da";
-    version = "2.8.26";
-    sha256 = "09b3x3bw3cgby9qvaccnqz2y6d8gl3497dh7q0dk1iznsxbk4x4m";
+    version = "2.9.9";
+    sha256 = "0d6swwliw0cbb03vjv2i1n8vcclwzragi1ik3m6ysbwm1m0sip5v";
   })
   (fetchNuGet {
     name = "Humanizer.Core.de";
-    version = "2.8.26";
-    sha256 = "1pyp2a9my20wlwjjzv563kshl9fpjb2kd4cw41l4wvsz1bsq3l22";
+    version = "2.9.9";
+    sha256 = "085ijfkbz4q6q90z0qc4k5hsv2acdlhli8whiikil9mlrjsjrqhi";
   })
   (fetchNuGet {
     name = "Humanizer.Core.el";
-    version = "2.8.26";
-    sha256 = "0v3sdcxca4dam1y5yjh9n6v711ys0zdv38hr4kij35s6277ls6lb";
+    version = "2.9.9";
+    sha256 = "1f5fr6l8f4brva1jxx6migv9yhp98svwkzly1b2b6n43ngppn4jd";
   })
   (fetchNuGet {
     name = "Humanizer.Core.es";
-    version = "2.8.26";
-    sha256 = "0wh9qvqf80cngwsz2jnrsjpmaax4xa2xp8bbk5xs480kp071z37q";
+    version = "2.9.9";
+    sha256 = "0nwwxhp2wgq424fy2mjrgsjsm86y818zl64k6zibkcnfldm8als6";
   })
   (fetchNuGet {
     name = "Humanizer.Core.fa";
-    version = "2.8.26";
-    sha256 = "00v56ddjfv6sr6w5246gn5z0padwswvnngp8mdl7gjfg5ycmbkl1";
+    version = "2.9.9";
+    sha256 = "1268lf9lxxnnax0ivyghh707fy50z09qds2jlh53dw1q0lxqgp50";
   })
   (fetchNuGet {
     name = "Humanizer.Core.fi-FI";
-    version = "2.8.26";
-    sha256 = "1pgs0j5ri50a6vhljplhrlc8jj1hrd9ggxkj60d9v5kk9xibzzyd";
+    version = "2.9.9";
+    sha256 = "1cjs78z1lc7a42b1wvcpxpydyv65rvyfvfic8k0d2flwcv98i7z2";
   })
   (fetchNuGet {
     name = "Humanizer.Core.fr";
-    version = "2.8.26";
-    sha256 = "0kkhgy3yn8vfqlx3dhb9m3cazkgfxarknam4macng9y17l7wj83m";
+    version = "2.9.9";
+    sha256 = "1al0xbg6p0287v60a4s6k7vgsng6k4m0scwlshmqsqxmvfsa1wk3";
   })
   (fetchNuGet {
     name = "Humanizer.Core.fr-BE";
-    version = "2.8.26";
-    sha256 = "13spcx07hph366qk073pz63s56nadaac7l4mr4a66gbpqd3814kb";
+    version = "2.9.9";
+    sha256 = "0jvi063lsrzds52zvq4w4qx6khkjcn5k8mp4014pzlphfhvlfbcl";
   })
   (fetchNuGet {
     name = "Humanizer.Core.he";
-    version = "2.8.26";
-    sha256 = "1ccn82aj3rhrhsa3kvkrmjw0p687icxlfja8ngbh7sby4cszx9bk";
+    version = "2.9.9";
+    sha256 = "1azymmsf79dyl8ihx8kn19mymx98sjknaqrqf043fy8qwirll1wm";
   })
   (fetchNuGet {
     name = "Humanizer.Core.hr";
-    version = "2.8.26";
-    sha256 = "12ii79bhai3kv7zr3k9k9dh569r6p3m4l4gj25cln2isr4wdi5r9";
+    version = "2.9.9";
+    sha256 = "1ygi02nxssn1wrdzammr5km7ak5h8yxghfvbcmy559npg0gy2gya";
   })
   (fetchNuGet {
     name = "Humanizer.Core.hu";
-    version = "2.8.26";
-    sha256 = "0cibbdxiqhwrjmxlr805mg3l9v0fl2ydx4m50608rkysjq6vxx7y";
+    version = "2.9.9";
+    sha256 = "0nimza5dngvl6yyigavr1rk5068yf2fmq3w3nm128plbnc8ynxfr";
   })
   (fetchNuGet {
     name = "Humanizer.Core.hy";
-    version = "2.8.26";
-    sha256 = "15aikm04f74abm4ak8rvnnkrlcz155gibn1y81pbgsyn7yrh84v3";
+    version = "2.9.9";
+    sha256 = "0v11hfh39mzm27dshmakhdnbpgzg660mskn1pkmmfdprka970cfj";
   })
   (fetchNuGet {
     name = "Humanizer.Core.id";
-    version = "2.8.26";
-    sha256 = "1i9gpzdfhmbvrqg858kqz5461sp3sh60g16dmcmyi1ik0qlspijn";
+    version = "2.9.9";
+    sha256 = "012bhisp75s4wv37ra692bfsvibnqgbfyipb2hw0743dqcy2mah2";
   })
   (fetchNuGet {
     name = "Humanizer.Core.it";
-    version = "2.8.26";
-    sha256 = "01j7qskmqcxsakbx3bkxcjyzrh6nxi2v6kfzsfb0vf980qqq331l";
+    version = "2.9.9";
+    sha256 = "1jj7qbia4b09hsyll524mpz67vy4z25zazwc1g10yi1sjsyah92f";
   })
   (fetchNuGet {
     name = "Humanizer.Core.ja";
-    version = "2.8.26";
-    sha256 = "07d19ns4a4pa2k4vdc1af7wj10gaflq1ny4mx6y574afkdi8v6d5";
+    version = "2.9.9";
+    sha256 = "1wqxw815287jlg6a6x3ffjhxvpa5al94jh3qkai2rw5kggcqzws4";
+  })
+  (fetchNuGet {
+    name = "Humanizer.Core.ko-KR";
+    version = "2.9.9";
+    sha256 = "1azggn1i8gnvc89kh7mv165bd2c7fwp1m1h9k6fcdk36kl4xxb97";
+  })
+  (fetchNuGet {
+    name = "Humanizer.Core.ku";
+    version = "2.9.9";
+    sha256 = "1qpwancwa6hgafrcdpbdb00vq08hrk77wjl64dvcjsx010n4c0fc";
   })
   (fetchNuGet {
     name = "Humanizer.Core.lv";
-    version = "2.8.26";
-    sha256 = "1pm64sj65nmngyfa3hjcw67icfmlzr232hmgpnw7306sb7dxmnfv";
+    version = "2.9.9";
+    sha256 = "1k6gxlzkpfmp8khn0dl0bfw878qpdff6zjqbirgpvlc57d00bws4";
   })
   (fetchNuGet {
     name = "Humanizer.Core.ms-MY";
-    version = "2.8.26";
-    sha256 = "1yx4cc023kc4k14abk2ycmjy6y2xaknaz4zria7xsadf0fabd1jc";
+    version = "2.9.9";
+    sha256 = "0p0lc3qkq5f8354g77xgy8qc9wyc509rca8xrzgc2lpzbvb4v008";
   })
   (fetchNuGet {
     name = "Humanizer.Core.mt";
-    version = "2.8.26";
-    sha256 = "0iai35pzka9g6c3sgswki06fk6gdnq8kc88wyb4pcciivazz31px";
+    version = "2.9.9";
+    sha256 = "0qn2c583lbc5qg0i1inqjb7zn8vcmvmjy8k70ngb6qyl1navmvcm";
   })
   (fetchNuGet {
     name = "Humanizer.Core.nb";
-    version = "2.8.26";
-    sha256 = "0xprhiyjyq6mpha2lrav59n1f48508ddvm9nmdk5sm5k26ff3l90";
+    version = "2.9.9";
+    sha256 = "12b7dx6jp5fcwsn54i7w1qz8y3cwbl8n8hia75iy9acd9l328shk";
   })
   (fetchNuGet {
     name = "Humanizer.Core.nb-NO";
-    version = "2.8.26";
-    sha256 = "160c98wfh7d2xlvlra4x5rdj4klgcjwcy3gkb4ipg655byn2m1j2";
+    version = "2.9.9";
+    sha256 = "04f47z9klpj6dq1gqlbcgyrli2s3rjci75i8lrng63vjjqi7jpqh";
   })
   (fetchNuGet {
     name = "Humanizer.Core.nl";
-    version = "2.8.26";
-    sha256 = "067pqm4i1mk83fqqr0bvzrchrvxwdnff18z3djgagclh1i4xqlvk";
+    version = "2.9.9";
+    sha256 = "19l4ik73500k2nxpcpylawy1aimb0awd82521abry3az4kc1lf29";
   })
   (fetchNuGet {
     name = "Humanizer.Core.pl";
-    version = "2.8.26";
-    sha256 = "1r1bbqb990war1hiag5f88yxw0k9jiid1ihb4s5bc1lzs3vfsb6x";
+    version = "2.9.9";
+    sha256 = "0hdh6gvz00xbrfyypwlbaw14409p75wqxraih2ckw23g8ci404l3";
   })
   (fetchNuGet {
     name = "Humanizer.Core.pt";
-    version = "2.8.26";
-    sha256 = "1bik0vjjdzw51yl11ng9gsi3ihz50ibwh1gdhh2vd13jxjzb512p";
+    version = "2.9.9";
+    sha256 = "03xplyqms9hpkl2bzhnqij3il78adi8a4azrs658rslpl8fl7ksd";
   })
   (fetchNuGet {
     name = "Humanizer.Core.ro";
-    version = "2.8.26";
-    sha256 = "12f2hry6x1p1mgx6g4kpig2jpybx52ibghvhdhjbbfhy32gv8dr0";
+    version = "2.9.9";
+    sha256 = "0x8qjkp8w32bhwr6509zpxlkvxb9izkgzq411hmh2sx4hrr90pzc";
   })
   (fetchNuGet {
     name = "Humanizer.Core.ru";
-    version = "2.8.26";
-    sha256 = "1hri12kwymzvdqcr66l8yiqiw3pmf9fk492z10yqljm576kyshgg";
+    version = "2.9.9";
+    sha256 = "0s2f9wxqwy281zw7aiswvfk8dg0i278g4z2l3bqn9iyijqm47zxx";
   })
   (fetchNuGet {
     name = "Humanizer.Core.sk";
-    version = "2.8.26";
-    sha256 = "07jfgk67axw97b85dn4bwpjwf3swd74j9hdd870qps12xfp98i9j";
+    version = "2.9.9";
+    sha256 = "0nq27nx6xq81d5avriphm7s926xm34306v7l7c88n71kn097jzl9";
   })
   (fetchNuGet {
     name = "Humanizer.Core.sl";
-    version = "2.8.26";
-    sha256 = "060xbzwb7p9ypbqfklih2zal2rh6h55gq4hv3i6alvlbd3vsx29n";
+    version = "2.9.9";
+    sha256 = "0dwszkm2xd4ysh3rrjx1zran09hl532hjrppfckqyy6n65b4axyf";
   })
   (fetchNuGet {
     name = "Humanizer.Core.sr";
-    version = "2.8.26";
-    sha256 = "0i2c24qmqnhp85b088qlbagxd48hcl0v1ly4m7hfbvx5s7fg8riv";
+    version = "2.9.9";
+    sha256 = "1vmfs9jp8ljlh6965pmb4afbcc9c4zlg5dn1pgbjc4miiwj6vc73";
   })
   (fetchNuGet {
     name = "Humanizer.Core.sr-Latn";
-    version = "2.8.26";
-    sha256 = "1911a69sqssh9f007vmxbgyj4ym2ym4423xvw6cmbfhjcrhkfpbi";
+    version = "2.9.9";
+    sha256 = "1dakb2zcaxmm9qw8fnsz5z12mmbjgx7jm9plxbm7jidjn7z271yl";
   })
   (fetchNuGet {
     name = "Humanizer.Core.sv";
-    version = "2.8.26";
-    sha256 = "056h8n9i18yl78f9ppzn2kkrz2cs46aqv0j5y8xq360zarggh0nm";
+    version = "2.9.9";
+    sha256 = "0jys46lz25yxx70w7y2623iabv3clf3lix8jzl8r68rj0lw6pxdz";
+  })
+  (fetchNuGet {
+    name = "Humanizer.Core.th-TH";
+    version = "2.9.9";
+    sha256 = "0r37ckvh68xvlyszgx94a8xxmya5cqiqnvdg5syw04lj0rshc3jb";
   })
   (fetchNuGet {
     name = "Humanizer.Core.tr";
-    version = "2.8.26";
-    sha256 = "0dk8ga3fpxifxxkz0n68654h65cvrx00hy7q00m5vgvmcp70gxxn";
+    version = "2.9.9";
+    sha256 = "1dnba6wbf6r5a1gmf7a7136qhy1w8izbh6wimmmwqsch2sk4ng4f";
   })
   (fetchNuGet {
     name = "Humanizer.Core.uk";
-    version = "2.8.26";
-    sha256 = "0bnj5xqlcqp4n8i04ra78dax4854zbf2jsygvb4lpiayyyaj2bxw";
+    version = "2.9.9";
+    sha256 = "1z0kdp2qkiyb4dhy22rqfik2b2c899nzkfh10907gp9827rdz3b9";
   })
   (fetchNuGet {
     name = "Humanizer.Core.uz-Cyrl-UZ";
-    version = "2.8.26";
-    sha256 = "1bbf6mxas6brjw7rjljq5saz6v3ic6zbvm1b3c1jbk0hc0qkd7c8";
+    version = "2.9.9";
+    sha256 = "1rnqa7w8s44fnqpw4g2drcwyajd5zhmwkqipi5zfhh0bcdnj9hxx";
   })
   (fetchNuGet {
     name = "Humanizer.Core.uz-Latn-UZ";
-    version = "2.8.26";
-    sha256 = "1bfgfihpynax30g9kq8kra7c4jxps2ccxsxrs9gls47xbs35cw2f";
+    version = "2.9.9";
+    sha256 = "1i1c6dy4bdglgyhv8g13lwqlis1snl7zcpdrvidw40f74ch0zq0g";
   })
   (fetchNuGet {
     name = "Humanizer.Core.vi";
-    version = "2.8.26";
-    sha256 = "1vm765nvkp6wyfwlcgppimjrk04lkg8lscch3n1i1i5hlqxrs9ch";
+    version = "2.9.9";
+    sha256 = "0ji0lmcm073x9fyigrw3b500drz268jarv6vfxpwxbzxd3mvnrys";
   })
   (fetchNuGet {
     name = "Humanizer.Core.zh-CN";
-    version = "2.8.26";
-    sha256 = "1qyl12rdh4iv1k1qcivcmxxnh8y93ainf22pmch8vvw9yjhs1y7s";
+    version = "2.9.9";
+    sha256 = "10iyrahi7rdp8lq4rxb2k9pny7da2aw9xfy2la8jdjrjgmqwffsi";
   })
   (fetchNuGet {
     name = "Humanizer.Core.zh-Hans";
-    version = "2.8.26";
-    sha256 = "1gqv3dyk236wlp5wb7kd4qnyrmp3cy36ycykl7zr91s25cdls5vy";
+    version = "2.9.9";
+    sha256 = "0f92fvzgcifaf2b64x8v52xckp1qxg88djlb9vlj083f6x29ick5";
   })
   (fetchNuGet {
     name = "Humanizer.Core.zh-Hant";
-    version = "2.8.26";
-    sha256 = "1rhzbiqbx04l3kvzjklix90fxyc6vvmmw0p564ajdiximivs0pbh";
+    version = "2.9.9";
+    sha256 = "0v9vqn6h467q7fy3xwabnqw48p48ilwkfg62b65j0q76ppnvsnvj";
   })
   (fetchNuGet {
     name = "JetBrains.Annotations";
@@ -301,53 +316,53 @@
   })
   (fetchNuGet {
     name = "Microsoft.AspNetCore.Connections.Abstractions";
-    version = "5.0.4";
-    sha256 = "002a3cvarwvvyic65khwavjxqsqjlnbgqc11sdyj3li15fxflk5g";
+    version = "5.0.5";
+    sha256 = "0qi4q54v7qiyc7xjbby88vmg1zcnb39sg8g1s7h0dnvapa436jv5";
   })
   (fetchNuGet {
     name = "Microsoft.AspNetCore.Http.Connections.Client";
-    version = "5.0.4";
-    sha256 = "1s19hx083c0r98wi6a8gqb3j3xjlrp9rkmvbpdxikzw8z4bnrjpn";
+    version = "5.0.5";
+    sha256 = "1lpsjv6475p2vdvwv9wwmpzxc0r9bfya15nc5xqiv8m9z8d4sxlh";
   })
   (fetchNuGet {
     name = "Microsoft.AspNetCore.Http.Connections.Common";
-    version = "5.0.4";
-    sha256 = "132ahfq7m369iss4ka402fj24rjdnhia41b94l3l135zplzlsl5n";
+    version = "5.0.5";
+    sha256 = "1knfn9d1wsczaic3vlnracmj5frpaxwx15x7j06kgi2kl6j2hbc7";
   })
   (fetchNuGet {
     name = "Microsoft.AspNetCore.Http.Features";
-    version = "5.0.4";
-    sha256 = "064n12ydyngh5q3y597x5cmciib74mpnhkvxicqp0kmgqsixkc7b";
+    version = "5.0.5";
+    sha256 = "011xdkqna8q0r2h9i1f646rkfjbl9qbaq56a487zagp8plwxvaxl";
   })
   (fetchNuGet {
     name = "Microsoft.AspNetCore.SignalR.Client";
-    version = "5.0.4";
-    sha256 = "0rpafasicnqng7ylx29hyslwp6g2j1l92szs0n9j98siscap17qg";
+    version = "5.0.5";
+    sha256 = "0r16n5c4im7gkfrhx2miiz9w58j0z87wjysbi4rsdav94hmkvgj4";
   })
   (fetchNuGet {
     name = "Microsoft.AspNetCore.SignalR.Client.Core";
-    version = "5.0.4";
-    sha256 = "1fwy2akhgphx72hc3rlax08aiaabvm9fi6jfj2r1dyzb2plcgig3";
+    version = "5.0.5";
+    sha256 = "11phwns2sn44vfd3vn6c0lh3aiiysfpav7rmv4cmjkxp3jmpay8r";
   })
   (fetchNuGet {
     name = "Microsoft.AspNetCore.SignalR.Common";
-    version = "5.0.4";
-    sha256 = "1dy00sf695sz842rlvgbyj2krgiqprx8qcdci8lz388rwp17drk2";
+    version = "5.0.5";
+    sha256 = "0am84ckim30djh4inv7mqph50axik79dwbfyrzlnaxcd3jr73c8c";
   })
   (fetchNuGet {
     name = "Microsoft.AspNetCore.SignalR.Protocols.Json";
-    version = "5.0.4";
-    sha256 = "0xp6ihjq835iqiiaxjl501pfplkqhd40kqxkazfj1icryls8hzhq";
+    version = "5.0.5";
+    sha256 = "1z8d2dsgj9bh9a2xcz5xlrw4iijgmrm1midkdqni9b4nypbyraf6";
   })
   (fetchNuGet {
     name = "Microsoft.AspNetCore.SignalR.Protocols.MessagePack";
-    version = "5.0.4";
-    sha256 = "1bvy4pvp3kxl75mbgy7saapjcnczylrqhf8ry0s66r12f7bzjki8";
+    version = "5.0.5";
+    sha256 = "0p52j1mrihvm4y4yp2rnimp4vdypn0hbba0p79vp617jj17vs45l";
   })
   (fetchNuGet {
     name = "Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson";
-    version = "5.0.4";
-    sha256 = "1gbkgc3cqv7q10k9hrjfj1ixpwx7b4n0x2f7sn9snsh977w7209j";
+    version = "5.0.5";
+    sha256 = "0jllzr9sba5m9ccdslr4dysmxzrfzy9zvianmqhmj4is6dg2krfs";
   })
   (fetchNuGet {
     name = "Microsoft.Bcl.AsyncInterfaces";
@@ -575,6 +590,11 @@
     sha256 = "0swqcknyh87ns82w539z1mvy804pfwhgzs97cr3nwqk6g5s42gd6";
   })
   (fetchNuGet {
+    name = "Microsoft.Extensions.Primitives";
+    version = "5.0.1";
+    sha256 = "01ar5ba2sal9wnpa1xnnikhgb37vzhg2cspz45wf760jflpai2vv";
+  })
+  (fetchNuGet {
     name = "Microsoft.NETCore.App.Runtime.linux-x64";
     version = "5.0.5";
     sha256 = "1h5yry6k9bpqqis2fb1901csb8kipm7anm174fjj41r317vzfjfa";
@@ -630,6 +650,11 @@
     sha256 = "1fr7969h5q611l5227xw6nvv5rzap76vbpk0wg9hxbcxk3hn7szf";
   })
   (fetchNuGet {
+    name = "Mono.Posix.NETStandard";
+    version = "1.0.0";
+    sha256 = "0xlja36hwpjm837haq15mjh2prcf68lyrmn72nvgpz8qnf9vappw";
+  })
+  (fetchNuGet {
     name = "NETStandard.Library";
     version = "1.6.0";
     sha256 = "0nmmv4yw7gw04ik8ialj3ak0j6pxa9spih67hnn1h2c38ba8h58k";
@@ -706,23 +731,23 @@
   })
   (fetchNuGet {
     name = "NUnit";
-    version = "3.13.1";
-    sha256 = "07156gr0yl9rqhyj44cp1xz9jpngbl5kb7ci3qfy9fcp01dczmm9";
+    version = "3.13.2";
+    sha256 = "00bkjgarkwbj497da9d7lajala1ns67h1kx53w4bapwkf32jlcvn";
   })
   (fetchNuGet {
     name = "OpenTabletDriver";
-    version = "0.5.2.3";
-    sha256 = "1qz5vmdwmfw8glkm6r7n06srcvrz5c3cwld1wv6xw4sagvwf0b6g";
+    version = "0.5.3.1";
+    sha256 = "16xw8w943x9gvnnpbryahff5azzy8n26j2igyqgv88m352jd9rb8";
   })
   (fetchNuGet {
     name = "OpenTabletDriver.Plugin";
-    version = "0.5.2.3";
-    sha256 = "0i03n5aydn0rv1v2y9c1cm9a2ss9y7p7l92k1x2yb6mwbx6vkpda";
+    version = "0.5.3.1";
+    sha256 = "17dxsvcz9g8kzydk5xlfz9kfxl62x9wi20609rh76wjd881bg1br";
   })
   (fetchNuGet {
     name = "ppy.osu.Framework";
-    version = "2021.410.0";
-    sha256 = "1vwdrspdpal44hyspv3rsax8mkszvbnc2xl1xswczx9mzj6qs4by";
+    version = "2021.427.0";
+    sha256 = "18n9g21y7asgr51fskfk3m0sx07y1mwrsdq4s065i8yk8d412mh7";
   })
   (fetchNuGet {
     name = "ppy.osu.Framework.NativeLibs";
@@ -731,8 +756,8 @@
   })
   (fetchNuGet {
     name = "ppy.osu.Game.Resources";
-    version = "2021.410.0";
-    sha256 = "1a5qia4595n0b21dj63sl71ar56m9x1glqwky7a9bb0dqpvfivya";
+    version = "2021.422.0";
+    sha256 = "1zw0197k6wmmjqjh022q3302mrwn59msx06y66378pahmhrr0sjc";
   })
   (fetchNuGet {
     name = "ppy.osuTK.NS20";
@@ -856,8 +881,8 @@
   })
   (fetchNuGet {
     name = "Sentry";
-    version = "3.2.0";
-    sha256 = "1hhgc4sqd7nampqydpdwfrc04hhqlkbv4p4w8cq6dswp5rf5k89b";
+    version = "3.3.4";
+    sha256 = "188rlyg6xfmgk6ypyg1mmbvm8d64q3wfjn3h0ays73b9wlypk8x6";
   })
   (fetchNuGet {
     name = "SharpCompress";
@@ -866,8 +891,8 @@
   })
   (fetchNuGet {
     name = "SharpCompress";
-    version = "0.28.1";
-    sha256 = "1h7gx7apafdd0jnv12fppca9b6cpq205kjkcipclxp1lli0i7qvw";
+    version = "0.28.2";
+    sha256 = "0pj30qm48m9vpq3i8wx9x11ficv36ki1973dk0873vqgvw8fwjj4";
   })
   (fetchNuGet {
     name = "SharpFNT";
@@ -1605,14 +1630,19 @@
     sha256 = "144pgy65jc3bkar7d4fg1c0rq6qmkx68gj9k1ldk97558w22v1r1";
   })
   (fetchNuGet {
+    name = "System.Text.Encodings.Web";
+    version = "5.0.1";
+    sha256 = "00yg63qnp94q2qryxxggzigi276bibb8b3b96gcvsyrxy7b703n9";
+  })
+  (fetchNuGet {
     name = "System.Text.Json";
     version = "5.0.0";
     sha256 = "1gpgl18z6qrgmqrikgh99xkjwzb1didrjp77bch7nrlra21gr4ks";
   })
   (fetchNuGet {
     name = "System.Text.Json";
-    version = "5.0.1";
-    sha256 = "1j7via4spxy73ipng754wdz1nb882gsb9qh26jqlql66vzbbm3j3";
+    version = "5.0.2";
+    sha256 = "0vd0wd29cdhgcjngl9sw391sn2s8xm974y15zvym0whsdgjwiqfx";
   })
   (fetchNuGet {
     name = "System.Text.RegularExpressions";
diff --git a/pkgs/os-specific/linux/bpftool/default.nix b/pkgs/os-specific/linux/bpftool/default.nix
deleted file mode 100644
index d8c64738d82..00000000000
--- a/pkgs/os-specific/linux/bpftool/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ lib, stdenv
-, libopcodes, libbfd, libelf
-, linuxPackages_latest, zlib
-, python3
-}:
-
-stdenv.mkDerivation {
-  pname = "bpftool";
-  inherit (linuxPackages_latest.kernel) version src;
-
-  nativeBuildInputs = [ python3 ];
-  buildInputs = [ libopcodes libbfd libelf zlib ];
-
-  preConfigure = ''
-    patchShebangs scripts/bpf_helpers_doc.py
-
-    cd tools/bpf/bpftool
-    substituteInPlace ./Makefile \
-      --replace '/usr/local' "$out" \
-      --replace '/usr'       "$out" \
-      --replace '/sbin'      '/bin'
-  '';
-
-  meta = with lib; {
-    description = "Debugging/program analysis tool for the eBPF subsystem";
-    license     = [ licenses.gpl2 licenses.bsd2 ];
-    platforms   = platforms.linux;
-    maintainers = with maintainers; [ thoughtpolice ];
-  };
-}
diff --git a/pkgs/os-specific/linux/bpftools/default.nix b/pkgs/os-specific/linux/bpftools/default.nix
new file mode 100644
index 00000000000..3e20efa9f01
--- /dev/null
+++ b/pkgs/os-specific/linux/bpftools/default.nix
@@ -0,0 +1,38 @@
+{ lib, stdenv
+, libopcodes, libbfd, libelf, readline
+, linuxPackages_latest, zlib
+, python3, bison, flex
+}:
+
+stdenv.mkDerivation {
+  pname = "bpftools";
+  inherit (linuxPackages_latest.kernel) version src;
+
+  nativeBuildInputs = [ python3 bison flex ];
+  buildInputs = [ libopcodes libbfd libelf zlib readline ];
+
+  preConfigure = ''
+    patchShebangs scripts/bpf_helpers_doc.py
+
+    cd tools/bpf
+    substituteInPlace ./bpftool/Makefile \
+      --replace '/usr/local' "$out" \
+      --replace '/usr'       "$out" \
+      --replace '/sbin'      '/bin'
+  '';
+
+  buildFlags = [ "bpftool" "bpf_asm" "bpf_dbg" ];
+
+  installPhase = ''
+    make -C bpftool install
+    install -Dm755 -t $out/bin bpf_asm
+    install -Dm755 -t $out/bin bpf_dbg
+  '';
+
+  meta = with lib; {
+    description = "Debugging/program analysis tools for the eBPF subsystem";
+    license     = [ licenses.gpl2 licenses.bsd2 ];
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ thoughtpolice ];
+  };
+}
diff --git a/pkgs/os-specific/linux/busybox/default.nix b/pkgs/os-specific/linux/busybox/default.nix
index 6c034e1c2af..63435e09168 100644
--- a/pkgs/os-specific/linux/busybox/default.nix
+++ b/pkgs/os-specific/linux/busybox/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, buildPackages, fetchurl, fetchFromGitLab
+{ stdenv, lib, buildPackages, fetchurl, fetchFromGitLab, fetchpatch
 , enableStatic ? stdenv.hostPlatform.isStatic
 , enableMinimal ? false
 # Allow forcing musl without switching stdenv itself, e.g. for our bootstrapping:
@@ -49,6 +49,9 @@ in
 
 stdenv.mkDerivation rec {
   pname = "busybox";
+  # TODO: When bumping to next version, remove the patch
+  # for CVE-2021-28831 (assuming the patch was included in
+  # the next upstream release)
   version = "1.32.1";
 
   # Note to whoever is updating busybox: please verify that:
@@ -64,6 +67,11 @@ stdenv.mkDerivation rec {
 
   patches = [
     ./busybox-in-store.patch
+    (fetchpatch {
+      name = "CVE-2021-28831.patch";
+      url = "https://git.busybox.net/busybox/patch/?id=f25d254dfd4243698c31a4f3153d4ac72aa9e9bd";
+      sha256 = "0y79flfbk45krwn963nnbqc21a88bsz4k4asqwvcnfk2lkciadxm";
+    }) # TODO: Removing when bumping the version
   ] ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) ./clang-cross.patch;
 
   postPatch = "patchShebangs .";
diff --git a/pkgs/os-specific/linux/cifs-utils/default.nix b/pkgs/os-specific/linux/cifs-utils/default.nix
index 38f958fe9dd..8c587a40196 100644
--- a/pkgs/os-specific/linux/cifs-utils/default.nix
+++ b/pkgs/os-specific/linux/cifs-utils/default.nix
@@ -3,11 +3,11 @@
 
 stdenv.mkDerivation rec {
   pname = "cifs-utils";
-  version = "6.12";
+  version = "6.13";
 
   src = fetchurl {
     url = "mirror://samba/pub/linux-cifs/cifs-utils/${pname}-${version}.tar.bz2";
-    sha256 = "1vw570pvir73kl4y6fhd6ns936ankimkhb1ii43yh8lr0p1xqbcj";
+    sha256 = "sha256-Q9h4bIYTysz6hJEwgcHWK8JAlXWFTPiVsFtIrwhj0FY=";
   };
 
   nativeBuildInputs = [ autoreconfHook docutils pkg-config ];
diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix
index e45b21ff35f..f874762267a 100644
--- a/pkgs/os-specific/linux/kernel/manual-config.nix
+++ b/pkgs/os-specific/linux/kernel/manual-config.nix
@@ -285,7 +285,7 @@ let
             " (with patches: "
             + lib.concatStringsSep ", " (map (x: x.name) kernelPatches)
             + ")");
-        license = lib.licenses.gpl2;
+        license = lib.licenses.gpl2Only;
         homepage = "https://www.kernel.org/";
         repositories.git = "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git";
         maintainers = [
diff --git a/pkgs/os-specific/linux/lxc/default.nix b/pkgs/os-specific/linux/lxc/default.nix
index 00822dd6150..1f5cf028a28 100644
--- a/pkgs/os-specific/linux/lxc/default.nix
+++ b/pkgs/os-specific/linux/lxc/default.nix
@@ -9,11 +9,11 @@
 with lib;
 stdenv.mkDerivation rec {
   pname = "lxc";
-  version = "4.0.7";
+  version = "4.0.8";
 
   src = fetchurl {
     url = "https://linuxcontainers.org/downloads/lxc/lxc-${version}.tar.gz";
-    sha256 = "0gqfc6nps8ja3iymh1mqbzakrlnzlf4lzfcxawz764w15z0214vl";
+    sha256 = "16qbmysiyrvb1inbbdr8qwqa0c6h9mwyrbx4ry18x0kvrhmqamdc";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/os-specific/linux/lxcfs/default.nix b/pkgs/os-specific/linux/lxcfs/default.nix
index bcc86b72de0..440e81266c8 100644
--- a/pkgs/os-specific/linux/lxcfs/default.nix
+++ b/pkgs/os-specific/linux/lxcfs/default.nix
@@ -5,13 +5,13 @@
 with lib;
 stdenv.mkDerivation rec {
   pname = "lxcfs";
-  version = "4.0.7";
+  version = "4.0.8";
 
   src = fetchFromGitHub {
     owner = "lxc";
     repo = "lxcfs";
     rev = "lxcfs-${version}";
-    sha256 = "sha256-gC1Q+kG/oKfYvuHVKstpRWfL/thsemULrimPrV/eeaI=";
+    sha256 = "sha256-8Tack2gM3AU3coGXs5hEbAaBCo5ss1sGUFFEjZDn5Lg=";
   };
 
   nativeBuildInputs = [ pkg-config help2man autoreconfHook makeWrapper ];
diff --git a/pkgs/servers/dante/default.nix b/pkgs/servers/dante/default.nix
index 99bde454659..1ed03f0e3d5 100644
--- a/pkgs/servers/dante/default.nix
+++ b/pkgs/servers/dante/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "dante";
-  version = "1.4.2";
+  version = "1.4.3";
 
   src = fetchurl {
     url = "https://www.inet.no/dante/files/${pname}-${version}.tar.gz";
-    sha256 = "1bfafnm445afrmyxvvcl8ckq0p59yzykmr3y8qvryzrscd85g8ms";
+    sha256 = "0pbahkj43rx7rmv2x40mf5p3g3x9d6i2sz7pzglarf54w5ghd2j1";
   };
 
   buildInputs = [ pam libkrb5 cyrus_sasl miniupnpc ];
diff --git a/pkgs/servers/http/trafficserver/default.nix b/pkgs/servers/http/trafficserver/default.nix
new file mode 100644
index 00000000000..05eb9a17c8e
--- /dev/null
+++ b/pkgs/servers/http/trafficserver/default.nix
@@ -0,0 +1,207 @@
+{ lib
+, stdenv
+, fetchurl
+, fetchpatch
+, makeWrapper
+, nixosTests
+, pkg-config
+, file
+, linuxHeaders
+, openssl
+, pcre
+, perlPackages
+, python3
+, xz
+, zlib
+# recommended dependencies
+, withHwloc ? true
+, hwloc
+, withCurl ? true
+, curl
+, withCurses ? true
+, ncurses
+, withCap ? stdenv.isLinux
+, libcap
+, withUnwind ? stdenv.isLinux
+, libunwind
+# optional dependencies
+, withBrotli ? false
+, brotli
+, withCjose ? false
+, cjose
+, withGeoIP ? false
+, geoip
+, withHiredis ? false
+, hiredis
+, withImageMagick ? false
+, imagemagick
+, withJansson ? false
+, jansson
+, withKyotoCabinet ? false
+, kyotocabinet
+, withLuaJIT ? false
+, luajit
+, withMaxmindDB ? false
+, libmaxminddb
+# optional features
+, enableWCCP ? false
+}:
+
+stdenv.mkDerivation rec {
+  pname = "trafficserver";
+  version = "9.0.1";
+
+  src = fetchurl {
+    url = "mirror://apache/trafficserver/trafficserver-${version}.tar.bz2";
+    sha256 = "1q164pvfmbqh3gzy3bqy96lwd0fdbhz78r06pd92p7rmkqwx005z";
+  };
+
+  patches = [
+    # Adds support for NixOS
+    # https://github.com/apache/trafficserver/pull/7697
+    (fetchpatch {
+      url = "https://github.com/apache/trafficserver/commit/19d3af481cf74c91fbf713fc9d2f8b138ed5fbaf.diff";
+      sha256 = "0z1ikgpp00rzrrcqh97931586yn9wbksgai9xlkcjd5cg8gq0150";
+    })
+
+    # Fixes a bug in tspush which pushes incorrect contents to cache
+    # https://github.com/apache/trafficserver/pull/7696
+    (fetchpatch {
+      url = "https://github.com/apache/trafficserver/commit/b08215272872f452787915cd3a8e0b0ea0b88385.diff";
+      sha256 = "0axk8x1xvd8wvpgcxgyqqg7kgxyxwfgwmisq3xnk1da0cqv9cx9f";
+    })
+  ];
+
+  # NOTE: The upstream README indicates that flex is needed for some features,
+  # but it actually seems to be unnecessary as of this commit[1]. The detection
+  # logic for bison and flex is still present in the build script[2], but no
+  # other code seems to depend on it. This situation is susceptible to change
+  # though, so it's a good idea to inspect the build scripts periodically.
+  #
+  # [1]: https://github.com/apache/trafficserver/pull/5617
+  # [2]: https://github.com/apache/trafficserver/blob/3fd2c60/configure.ac#L742-L788
+  nativeBuildInputs = [ makeWrapper pkg-config file python3 ]
+    ++ (with perlPackages; [ perl ExtUtilsMakeMaker ])
+    ++ lib.optionals stdenv.isLinux [ linuxHeaders ];
+
+  buildInputs = [
+    openssl
+    pcre
+    perlPackages.perl
+  ] ++ lib.optional withBrotli brotli
+  ++ lib.optional withCap libcap
+  ++ lib.optional withCjose cjose
+  ++ lib.optional withCurl curl
+  ++ lib.optional withGeoIP geoip
+  ++ lib.optional withHiredis hiredis
+  ++ lib.optional withHwloc hwloc
+  ++ lib.optional withImageMagick imagemagick
+  ++ lib.optional withJansson jansson
+  ++ lib.optional withKyotoCabinet kyotocabinet
+  ++ lib.optional withCurses ncurses
+  ++ lib.optional withLuaJIT luajit
+  ++ lib.optional withUnwind libunwind
+  ++ lib.optional withMaxmindDB libmaxminddb;
+
+  outputs = [ "out" "man" ];
+
+  postPatch = ''
+    patchShebangs \
+      iocore/aio/test_AIO.sample \
+      src/traffic_via/test_traffic_via \
+      src/traffic_logstats/tests \
+      tools/check-unused-dependencies
+
+    substituteInPlace configure --replace '/usr/bin/file' '${file}/bin/file'
+  '' + lib.optionalString stdenv.isLinux ''
+    substituteInPlace configure \
+      --replace '/usr/include/linux' '${linuxHeaders}/include/linux'
+  '' + lib.optionalString stdenv.isDarwin ''
+    # 'xcrun leaks' probably requires non-free XCode
+    substituteInPlace iocore/net/test_certlookup.cc \
+      --replace 'xcrun leaks' 'true'
+  '';
+
+  configureFlags = [
+    "--enable-layout=NixOS"
+    "--enable-experimental-plugins"
+    (lib.enableFeature enableWCCP "wccp")
+
+    # the configure script can't auto-locate the following from buildInputs
+    "--with-lzma=${xz.dev}"
+    "--with-zlib=${zlib.dev}"
+    (lib.withFeatureAs withHiredis "hiredis" hiredis)
+  ];
+
+  installFlags = [
+    "pkgsysconfdir=${placeholder "out"}/etc/trafficserver"
+
+    # replace runtime directories with an install-time placeholder directory
+    "pkgcachedir=${placeholder "out"}/.install-trafficserver"
+    "pkglocalstatedir=${placeholder "out"}/.install-trafficserver"
+    "pkglogdir=${placeholder "out"}/.install-trafficserver"
+    "pkgruntimedir=${placeholder "out"}/.install-trafficserver"
+  ];
+
+  postInstall = ''
+    substituteInPlace rc/trafficserver.service --replace "syslog.target" ""
+    install -Dm644 rc/trafficserver.service $out/lib/systemd/system/trafficserver.service
+
+    wrapProgram $out/bin/tspush \
+      --set PERL5LIB '${with perlPackages; makePerlPath [ URI ]}' \
+      --prefix PATH : "${lib.makeBinPath [ file ]}"
+
+    find "$out" -name '*.la' -delete
+
+    # ensure no files actually exist in this directory
+    rmdir $out/.install-trafficserver
+  '';
+
+  installCheckPhase = let
+    expected = ''
+      Via header is [uScMsEf p eC:t cCMp sF], Length is 22
+      Via Header Details:
+      Request headers received from client                   :simple request (not conditional)
+      Result of Traffic Server cache lookup for URL          :miss (a cache "MISS")
+      Response information received from origin server       :error in response
+      Result of document write-to-cache:                     :no cache write performed
+      Proxy operation result                                 :unknown
+      Error codes (if any)                                   :connection to server failed
+      Tunnel info                                            :no tunneling
+      Cache Type                                             :cache
+      Cache Lookup Result                                    :cache miss (url not in cache)
+      Parent proxy connection status                         :no parent proxy or unknown
+      Origin server connection status                        :connection open failed
+    '';
+  in ''
+    runHook preInstallCheck
+    diff -Naur <($out/bin/traffic_via '[uScMsEf p eC:t cCMp sF]') - <<EOF
+    ${lib.removeSuffix "\n" expected}
+    EOF
+    runHook postInstallCheck
+  '';
+
+  doCheck = true;
+  doInstallCheck = true;
+  enableParallelBuilding = true;
+
+  passthru.tests = { inherit (nixosTests) trafficserver; };
+
+  meta = with lib; {
+    homepage = "https://trafficserver.apache.org";
+    changelog = "https://raw.githubusercontent.com/apache/trafficserver/${version}/CHANGELOG-${version}";
+    description = "Fast, scalable, and extensible HTTP caching proxy server";
+    longDescription = ''
+      Apache Traffic Server is a high-performance web proxy cache that improves
+      network efficiency and performance by caching frequently-accessed
+      information at the edge of the network. This brings content physically
+      closer to end users, while enabling faster delivery and reduced bandwidth
+      use. Traffic Server is designed to improve content delivery for
+      enterprises, Internet service providers (ISPs), backbone providers, and
+      large intranets by maximizing existing and available bandwidth.
+    '';
+    license = licenses.asl20;
+    maintainers = with maintainers; [ midchildan joaquinito2051 ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/servers/matrix-dendrite/default.nix b/pkgs/servers/matrix-dendrite/default.nix
new file mode 100644
index 00000000000..708a1e6f65e
--- /dev/null
+++ b/pkgs/servers/matrix-dendrite/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildGoModule, fetchFromGitHub}:
+
+buildGoModule rec {
+  pname = "matrix-dendrite";
+  version = "0.3.11";
+
+  src = fetchFromGitHub {
+    owner = "matrix-org";
+    repo = "dendrite";
+    rev = "v${version}";
+    sha256 = "15xqd4yhsnnpz5n90fbny9i8lp7ki2z3fbpbd8cvsp49347rm483";
+  };
+
+  vendorSha256 = "1l1wydvi0yalas79cvhrqg563cvs57hg9rv6qnkw879r6smb2x1n";
+
+  meta = with lib; {
+    homepage = "https://matrix.org";
+    description = "Dendrite is a second-generation Matrix homeserver written in Go!";
+    license = licenses.asl20;
+    maintainers = teams.matrix.members;
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/servers/mautrix-signal/default.nix b/pkgs/servers/mautrix-signal/default.nix
index 2bf69a63061..c39394879fb 100644
--- a/pkgs/servers/mautrix-signal/default.nix
+++ b/pkgs/servers/mautrix-signal/default.nix
@@ -37,7 +37,7 @@ python3Packages.buildPythonPackage rec {
     # Make a little wrapper for running mautrix-signal with its dependencies
     echo "$mautrixSignalScript" > $out/bin/mautrix-signal
     echo "#!/bin/sh
-      exec python -m mautrix_signal \"$@\"
+      exec python -m mautrix_signal \"\$@\"
     " > $out/bin/mautrix-signal
     chmod +x $out/bin/mautrix-signal
     wrapProgram $out/bin/mautrix-signal \
diff --git a/pkgs/servers/misc/airsonic/default.nix b/pkgs/servers/misc/airsonic/default.nix
index bd8310bc74f..8fba050ffad 100644
--- a/pkgs/servers/misc/airsonic/default.nix
+++ b/pkgs/servers/misc/airsonic/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl }:
+{ lib, stdenv, fetchurl, nixosTests }:
 
 stdenv.mkDerivation rec {
   pname = "airsonic";
@@ -14,6 +14,10 @@ stdenv.mkDerivation rec {
     cp "$src" "$out/webapps/airsonic.war"
   '';
 
+  passthru.tests = {
+    airsonic-starts = nixosTests.airsonic;
+  };
+
   meta = with lib; {
     description = "Personal media streamer";
     homepage = "https://airsonic.github.io";
diff --git a/pkgs/servers/mx-puppet-discord/default.nix b/pkgs/servers/mx-puppet-discord/default.nix
new file mode 100644
index 00000000000..b3b72c2c5f2
--- /dev/null
+++ b/pkgs/servers/mx-puppet-discord/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchFromGitHub, pkgs, lib, nodejs, nodePackages, pkg-config, libjpeg
+, pixman, cairo, pango }:
+
+let
+  # No official version ever released
+  src = fetchFromGitHub {
+    owner = "matrix-discord";
+    repo = "mx-puppet-discord";
+    rev = "c17384a6a12a42a528e0b1259f8073e8db89b8f4";
+    sha256 = "1yczhfpa4qzvijcpgc2pr10s009qb6jwlfwpcbb17g2wsx6zj0c2";
+  };
+
+  myNodePackages = import ./node-composition.nix {
+    inherit pkgs nodejs;
+    inherit (stdenv.hostPlatform) system;
+  };
+
+in myNodePackages.package.override {
+  inherit src;
+  nativeBuildInputs = [ nodePackages.node-pre-gyp pkg-config ];
+  buildInputs = [ libjpeg pixman cairo pango ];
+
+  postInstall = ''
+    # Patch shebangs in node_modules, otherwise the webpack build fails with interpreter problems
+    patchShebangs --build "$out/lib/node_modules/mx-puppet-discord/node_modules/"
+    # compile Typescript sources
+    npm run build
+
+    # Make an executable to run the server
+    mkdir -p $out/bin
+    cat <<EOF > $out/bin/mx-puppet-discord
+    #!/bin/sh
+    exec ${nodejs}/bin/node $out/lib/node_modules/mx-puppet-discord/build/index.js "\$@"
+    EOF
+    chmod +x $out/bin/mx-puppet-discord
+  '';
+
+  meta = with lib; {
+    description = "A discord puppeting bridge for matrix";
+    license = licenses.asl20;
+    homepage = "https://github.com/matrix-discord/mx-puppet-discord";
+    maintainers = with maintainers; [ expipiplus1 ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/servers/mx-puppet-discord/generate.sh b/pkgs/servers/mx-puppet-discord/generate.sh
new file mode 100755
index 00000000000..851671a147a
--- /dev/null
+++ b/pkgs/servers/mx-puppet-discord/generate.sh
@@ -0,0 +1,21 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i bash -p nodePackages.node2nix
+
+# No official release
+rev=c17384a6a12a42a528e0b1259f8073e8db89b8f4
+u=https://raw.githubusercontent.com/matrix-discord/mx-puppet-discord/$rev
+# Download package.json and package-lock.json
+curl -O $u/package.json
+curl -O $u/package-lock.json
+
+node2nix \
+  --nodejs-12 \
+  --node-env ../../development/node-packages/node-env.nix \
+  --input package.json \
+  --lock package-lock.json \
+  --output node-packages.nix \
+  --composition node-composition.nix
+
+sed -i 's|<nixpkgs>|../../..|' node-composition.nix
+
+rm -f package.json package-lock.json
diff --git a/pkgs/servers/mx-puppet-discord/node-composition.nix b/pkgs/servers/mx-puppet-discord/node-composition.nix
new file mode 100644
index 00000000000..777c9db5256
--- /dev/null
+++ b/pkgs/servers/mx-puppet-discord/node-composition.nix
@@ -0,0 +1,17 @@
+# This file has been generated by node2nix 1.9.0. Do not edit!
+
+{pkgs ? import ../../.. {
+    inherit system;
+  }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-12_x"}:
+
+let
+  nodeEnv = import ../../development/node-packages/node-env.nix {
+    inherit (pkgs) stdenv lib python2 runCommand writeTextFile;
+    inherit pkgs nodejs;
+    libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
+  };
+in
+import ./node-packages.nix {
+  inherit (pkgs) fetchurl nix-gitignore stdenv lib fetchgit;
+  inherit nodeEnv;
+}
diff --git a/pkgs/servers/mx-puppet-discord/node-packages.nix b/pkgs/servers/mx-puppet-discord/node-packages.nix
new file mode 100644
index 00000000000..b3dc83bb343
--- /dev/null
+++ b/pkgs/servers/mx-puppet-discord/node-packages.nix
@@ -0,0 +1,3616 @@
+# This file has been generated by node2nix 1.9.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, nix-gitignore, stdenv, lib, globalBuildInputs ? []}:
+
+let
+  sources = {
+    "@babel/code-frame-7.0.0" = {
+      name = "_at_babel_slash_code-frame";
+      packageName = "@babel/code-frame";
+      version = "7.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz";
+        sha512 = "OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==";
+      };
+    };
+    "@babel/highlight-7.0.0" = {
+      name = "_at_babel_slash_highlight";
+      packageName = "@babel/highlight";
+      version = "7.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz";
+        sha512 = "UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==";
+      };
+    };
+    "@dabh/diagnostics-2.0.2" = {
+      name = "_at_dabh_slash_diagnostics";
+      packageName = "@dabh/diagnostics";
+      version = "2.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz";
+        sha512 = "+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==";
+      };
+    };
+    "@discordjs/collection-0.1.6" = {
+      name = "_at_discordjs_slash_collection";
+      packageName = "@discordjs/collection";
+      version = "0.1.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@discordjs/collection/-/collection-0.1.6.tgz";
+        sha512 = "utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ==";
+      };
+    };
+    "@discordjs/form-data-3.0.1" = {
+      name = "_at_discordjs_slash_form-data";
+      packageName = "@discordjs/form-data";
+      version = "3.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@discordjs/form-data/-/form-data-3.0.1.tgz";
+        sha512 = "ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==";
+      };
+    };
+    "@sindresorhus/is-3.1.2" = {
+      name = "_at_sindresorhus_slash_is";
+      packageName = "@sindresorhus/is";
+      version = "3.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@sindresorhus/is/-/is-3.1.2.tgz";
+        sha512 = "JiX9vxoKMmu8Y3Zr2RVathBL1Cdu4Nt4MuNWemt1Nc06A0RAin9c5FArkhGsyMBWfCu4zj+9b+GxtjAnE4qqLQ==";
+      };
+    };
+    "@sorunome/matrix-bot-sdk-0.5.8" = {
+      name = "_at_sorunome_slash_matrix-bot-sdk";
+      packageName = "@sorunome/matrix-bot-sdk";
+      version = "0.5.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@sorunome/matrix-bot-sdk/-/matrix-bot-sdk-0.5.8.tgz";
+        sha512 = "Uifu8saeD1fPrj6F8ZdYiCeADCluySbdi/nVKJy0NQOi6cA5p68ZaeydlCyl+YuFJoCjsDWBe+Szq9CgFd/SpA==";
+      };
+    };
+    "@szmarczak/http-timer-4.0.5" = {
+      name = "_at_szmarczak_slash_http-timer";
+      packageName = "@szmarczak/http-timer";
+      version = "4.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz";
+        sha512 = "PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==";
+      };
+    };
+    "@types/body-parser-1.19.0" = {
+      name = "_at_types_slash_body-parser";
+      packageName = "@types/body-parser";
+      version = "1.19.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz";
+        sha512 = "W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==";
+      };
+    };
+    "@types/cacheable-request-6.0.1" = {
+      name = "_at_types_slash_cacheable-request";
+      packageName = "@types/cacheable-request";
+      version = "6.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz";
+        sha512 = "ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==";
+      };
+    };
+    "@types/connect-3.4.34" = {
+      name = "_at_types_slash_connect";
+      packageName = "@types/connect";
+      version = "3.4.34";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz";
+        sha512 = "ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==";
+      };
+    };
+    "@types/express-4.17.11" = {
+      name = "_at_types_slash_express";
+      packageName = "@types/express";
+      version = "4.17.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/express/-/express-4.17.11.tgz";
+        sha512 = "no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg==";
+      };
+    };
+    "@types/express-serve-static-core-4.17.18" = {
+      name = "_at_types_slash_express-serve-static-core";
+      packageName = "@types/express-serve-static-core";
+      version = "4.17.18";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.18.tgz";
+        sha512 = "m4JTwx5RUBNZvky/JJ8swEJPKFd8si08pPF2PfizYjGZOKr/svUWPcoUmLow6MmPzhasphB7gSTINY67xn3JNA==";
+      };
+    };
+    "@types/http-cache-semantics-4.0.0" = {
+      name = "_at_types_slash_http-cache-semantics";
+      packageName = "@types/http-cache-semantics";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz";
+        sha512 = "c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==";
+      };
+    };
+    "@types/keyv-3.1.1" = {
+      name = "_at_types_slash_keyv";
+      packageName = "@types/keyv";
+      version = "3.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz";
+        sha512 = "MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==";
+      };
+    };
+    "@types/mime-1.3.2" = {
+      name = "_at_types_slash_mime";
+      packageName = "@types/mime";
+      version = "1.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz";
+        sha512 = "YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==";
+      };
+    };
+    "@types/node-14.6.3" = {
+      name = "_at_types_slash_node";
+      packageName = "@types/node";
+      version = "14.6.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/node/-/node-14.6.3.tgz";
+        sha512 = "pC/hkcREG6YfDfui1FBmj8e20jFU5Exjw4NYDm8kEdrW+mOh0T1Zve8DWKnS7ZIZvgncrctcNCXF4Q2I+loyww==";
+      };
+    };
+    "@types/prop-types-15.7.3" = {
+      name = "_at_types_slash_prop-types";
+      packageName = "@types/prop-types";
+      version = "15.7.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz";
+        sha512 = "KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==";
+      };
+    };
+    "@types/qs-6.9.5" = {
+      name = "_at_types_slash_qs";
+      packageName = "@types/qs";
+      version = "6.9.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/qs/-/qs-6.9.5.tgz";
+        sha512 = "/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ==";
+      };
+    };
+    "@types/range-parser-1.2.3" = {
+      name = "_at_types_slash_range-parser";
+      packageName = "@types/range-parser";
+      version = "1.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz";
+        sha512 = "ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==";
+      };
+    };
+    "@types/react-17.0.0" = {
+      name = "_at_types_slash_react";
+      packageName = "@types/react";
+      version = "17.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/react/-/react-17.0.0.tgz";
+        sha512 = "aj/L7RIMsRlWML3YB6KZiXB3fV2t41+5RBGYF8z+tAKU43Px8C3cYUZsDvf1/+Bm4FK21QWBrDutu8ZJ/70qOw==";
+      };
+    };
+    "@types/responselike-1.0.0" = {
+      name = "_at_types_slash_responselike";
+      packageName = "@types/responselike";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz";
+        sha512 = "85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==";
+      };
+    };
+    "@types/serve-static-1.13.9" = {
+      name = "_at_types_slash_serve-static";
+      packageName = "@types/serve-static";
+      version = "1.13.9";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz";
+        sha512 = "ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==";
+      };
+    };
+    "abbrev-1.1.1" = {
+      name = "abbrev";
+      packageName = "abbrev";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz";
+        sha512 = "nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==";
+      };
+    };
+    "abort-controller-3.0.0" = {
+      name = "abort-controller";
+      packageName = "abort-controller";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz";
+        sha512 = "h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==";
+      };
+    };
+    "accepts-1.3.7" = {
+      name = "accepts";
+      packageName = "accepts";
+      version = "1.3.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz";
+        sha512 = "Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==";
+      };
+    };
+    "ansi-regex-2.1.1" = {
+      name = "ansi-regex";
+      packageName = "ansi-regex";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz";
+        sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
+      };
+    };
+    "ansi-styles-3.2.1" = {
+      name = "ansi-styles";
+      packageName = "ansi-styles";
+      version = "3.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz";
+        sha512 = "VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==";
+      };
+    };
+    "ansi-styles-4.3.0" = {
+      name = "ansi-styles";
+      packageName = "ansi-styles";
+      version = "4.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz";
+        sha512 = "zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==";
+      };
+    };
+    "aproba-1.2.0" = {
+      name = "aproba";
+      packageName = "aproba";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz";
+        sha512 = "Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==";
+      };
+    };
+    "are-we-there-yet-1.1.5" = {
+      name = "are-we-there-yet";
+      packageName = "are-we-there-yet";
+      version = "1.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz";
+        sha512 = "5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==";
+      };
+    };
+    "argparse-1.0.10" = {
+      name = "argparse";
+      packageName = "argparse";
+      version = "1.0.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz";
+        sha512 = "o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==";
+      };
+    };
+    "array-back-2.0.0" = {
+      name = "array-back";
+      packageName = "array-back";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz";
+        sha512 = "eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==";
+      };
+    };
+    "array-back-3.1.0" = {
+      name = "array-back";
+      packageName = "array-back";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz";
+        sha512 = "TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==";
+      };
+    };
+    "array-flatten-1.1.1" = {
+      name = "array-flatten";
+      packageName = "array-flatten";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz";
+        sha1 = "9a5f699051b1e7073328f2a008968b64ea2955d2";
+      };
+    };
+    "assert-options-0.7.0" = {
+      name = "assert-options";
+      packageName = "assert-options";
+      version = "0.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/assert-options/-/assert-options-0.7.0.tgz";
+        sha512 = "7q9uNH/Dh8gFgpIIb9ja8PJEWA5AQy3xnBC8jtKs8K/gNVCr1K6kIvlm59HUyYgvM7oEDoLzGgPcGd9FqhtXEQ==";
+      };
+    };
+    "async-3.2.0" = {
+      name = "async";
+      packageName = "async";
+      version = "3.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/async/-/async-3.2.0.tgz";
+        sha512 = "TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==";
+      };
+    };
+    "asynckit-0.4.0" = {
+      name = "asynckit";
+      packageName = "asynckit";
+      version = "0.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
+        sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
+      };
+    };
+    "balanced-match-1.0.0" = {
+      name = "balanced-match";
+      packageName = "balanced-match";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz";
+        sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
+      };
+    };
+    "base64-js-1.5.1" = {
+      name = "base64-js";
+      packageName = "base64-js";
+      version = "1.5.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz";
+        sha512 = "AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==";
+      };
+    };
+    "basic-auth-2.0.1" = {
+      name = "basic-auth";
+      packageName = "basic-auth";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz";
+        sha512 = "NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==";
+      };
+    };
+    "better-discord.js-git+https://github.com/Sorunome/better-discord.js.git#5e58e1e7510cf2192f3503ca146dd61a56a75c72" = {
+      name = "better-discord.js";
+      packageName = "better-discord.js";
+      version = "12.5.1";
+      src = fetchgit {
+        url = "https://github.com/Sorunome/better-discord.js.git";
+        rev = "5e58e1e7510cf2192f3503ca146dd61a56a75c72";
+        sha256 = "ab87453cc9db05b3bc691f27e92c5a4a6a14a528c98c7d313d6dd42f1741124a";
+      };
+    };
+    "better-sqlite3-6.0.1" = {
+      name = "better-sqlite3";
+      packageName = "better-sqlite3";
+      version = "6.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-6.0.1.tgz";
+        sha512 = "4aV1zEknM9g1a6B0mVBx1oIlmYioEJ8gSS3J6EpN1b1bKYEE+N5lmpmXHKNKTi0qjHziSd7XrXwHl1kpqvEcHQ==";
+      };
+    };
+    "bindings-1.5.0" = {
+      name = "bindings";
+      packageName = "bindings";
+      version = "1.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz";
+        sha512 = "p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==";
+      };
+    };
+    "bintrees-1.0.1" = {
+      name = "bintrees";
+      packageName = "bintrees";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bintrees/-/bintrees-1.0.1.tgz";
+        sha1 = "0e655c9b9c2435eaab68bf4027226d2b55a34524";
+      };
+    };
+    "bl-4.0.3" = {
+      name = "bl";
+      packageName = "bl";
+      version = "4.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz";
+        sha512 = "fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==";
+      };
+    };
+    "blurhash-1.1.3" = {
+      name = "blurhash";
+      packageName = "blurhash";
+      version = "1.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/blurhash/-/blurhash-1.1.3.tgz";
+        sha512 = "yUhPJvXexbqbyijCIE/T2NCXcj9iNPhWmOKbPTuR/cm7Q5snXYIfnVnz6m7MWOXxODMz/Cr3UcVkRdHiuDVRDw==";
+      };
+    };
+    "body-parser-1.19.0" = {
+      name = "body-parser";
+      packageName = "body-parser";
+      version = "1.19.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz";
+        sha512 = "dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==";
+      };
+    };
+    "brace-expansion-1.1.11" = {
+      name = "brace-expansion";
+      packageName = "brace-expansion";
+      version = "1.1.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";
+        sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==";
+      };
+    };
+    "buffer-5.7.1" = {
+      name = "buffer";
+      packageName = "buffer";
+      version = "5.7.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz";
+        sha512 = "EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==";
+      };
+    };
+    "buffer-writer-2.0.0" = {
+      name = "buffer-writer";
+      packageName = "buffer-writer";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz";
+        sha512 = "a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==";
+      };
+    };
+    "builtin-modules-1.1.1" = {
+      name = "builtin-modules";
+      packageName = "builtin-modules";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz";
+        sha1 = "270f076c5a72c02f5b65a47df94c5fe3a278892f";
+      };
+    };
+    "bytes-3.1.0" = {
+      name = "bytes";
+      packageName = "bytes";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz";
+        sha512 = "zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==";
+      };
+    };
+    "cacheable-lookup-5.0.3" = {
+      name = "cacheable-lookup";
+      packageName = "cacheable-lookup";
+      version = "5.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.3.tgz";
+        sha512 = "W+JBqF9SWe18A72XFzN/V/CULFzPm7sBXzzR6ekkE+3tLG72wFZrBiBZhrZuDoYexop4PHJVdFAKb/Nj9+tm9w==";
+      };
+    };
+    "cacheable-request-7.0.1" = {
+      name = "cacheable-request";
+      packageName = "cacheable-request";
+      version = "7.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz";
+        sha512 = "lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==";
+      };
+    };
+    "canvas-2.6.1" = {
+      name = "canvas";
+      packageName = "canvas";
+      version = "2.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/canvas/-/canvas-2.6.1.tgz";
+        sha512 = "S98rKsPcuhfTcYbtF53UIJhcbgIAK533d1kJKMwsMwAIFgfd58MOyxRud3kktlzWiEkFliaJtvyZCBtud/XVEA==";
+      };
+    };
+    "chalk-2.4.2" = {
+      name = "chalk";
+      packageName = "chalk";
+      version = "2.4.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz";
+        sha512 = "Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==";
+      };
+    };
+    "chalk-4.1.0" = {
+      name = "chalk";
+      packageName = "chalk";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz";
+        sha512 = "qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==";
+      };
+    };
+    "chownr-1.1.4" = {
+      name = "chownr";
+      packageName = "chownr";
+      version = "1.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz";
+        sha512 = "jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==";
+      };
+    };
+    "clone-response-1.0.2" = {
+      name = "clone-response";
+      packageName = "clone-response";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz";
+        sha1 = "d1dc973920314df67fbeb94223b4ee350239e96b";
+      };
+    };
+    "code-point-at-1.1.0" = {
+      name = "code-point-at";
+      packageName = "code-point-at";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz";
+        sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
+      };
+    };
+    "color-3.0.0" = {
+      name = "color";
+      packageName = "color";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/color/-/color-3.0.0.tgz";
+        sha512 = "jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==";
+      };
+    };
+    "color-convert-1.9.3" = {
+      name = "color-convert";
+      packageName = "color-convert";
+      version = "1.9.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz";
+        sha512 = "QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==";
+      };
+    };
+    "color-convert-2.0.1" = {
+      name = "color-convert";
+      packageName = "color-convert";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz";
+        sha512 = "RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==";
+      };
+    };
+    "color-name-1.1.3" = {
+      name = "color-name";
+      packageName = "color-name";
+      version = "1.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz";
+        sha1 = "a7d0558bd89c42f795dd42328f740831ca53bc25";
+      };
+    };
+    "color-name-1.1.4" = {
+      name = "color-name";
+      packageName = "color-name";
+      version = "1.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz";
+        sha512 = "dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==";
+      };
+    };
+    "color-string-1.5.4" = {
+      name = "color-string";
+      packageName = "color-string";
+      version = "1.5.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz";
+        sha512 = "57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==";
+      };
+    };
+    "colors-1.4.0" = {
+      name = "colors";
+      packageName = "colors";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz";
+        sha512 = "a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==";
+      };
+    };
+    "colorspace-1.1.2" = {
+      name = "colorspace";
+      packageName = "colorspace";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz";
+        sha512 = "vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==";
+      };
+    };
+    "combined-stream-1.0.8" = {
+      name = "combined-stream";
+      packageName = "combined-stream";
+      version = "1.0.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz";
+        sha512 = "FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==";
+      };
+    };
+    "command-line-args-5.1.1" = {
+      name = "command-line-args";
+      packageName = "command-line-args";
+      version = "5.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/command-line-args/-/command-line-args-5.1.1.tgz";
+        sha512 = "hL/eG8lrll1Qy1ezvkant+trihbGnaKaeEjj6Scyr3DN+RC7iQ5Rz84IeLERfAWDGo0HBSNAakczwgCilDXnWg==";
+      };
+    };
+    "command-line-usage-5.0.5" = {
+      name = "command-line-usage";
+      packageName = "command-line-usage";
+      version = "5.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/command-line-usage/-/command-line-usage-5.0.5.tgz";
+        sha512 = "d8NrGylA5oCXSbGoKz05FkehDAzSmIm4K03S5VDh4d5lZAtTWfc3D1RuETtuQCn8129nYfJfDdF7P/lwcz1BlA==";
+      };
+    };
+    "commander-2.20.0" = {
+      name = "commander";
+      packageName = "commander";
+      version = "2.20.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz";
+        sha512 = "7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==";
+      };
+    };
+    "concat-map-0.0.1" = {
+      name = "concat-map";
+      packageName = "concat-map";
+      version = "0.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
+        sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
+      };
+    };
+    "console-control-strings-1.1.0" = {
+      name = "console-control-strings";
+      packageName = "console-control-strings";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz";
+        sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e";
+      };
+    };
+    "content-disposition-0.5.3" = {
+      name = "content-disposition";
+      packageName = "content-disposition";
+      version = "0.5.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz";
+        sha512 = "ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==";
+      };
+    };
+    "content-type-1.0.4" = {
+      name = "content-type";
+      packageName = "content-type";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz";
+        sha512 = "hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==";
+      };
+    };
+    "cookie-0.4.0" = {
+      name = "cookie";
+      packageName = "cookie";
+      version = "0.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz";
+        sha512 = "+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==";
+      };
+    };
+    "cookie-signature-1.0.6" = {
+      name = "cookie-signature";
+      packageName = "cookie-signature";
+      version = "1.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz";
+        sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
+      };
+    };
+    "core-util-is-1.0.2" = {
+      name = "core-util-is";
+      packageName = "core-util-is";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
+        sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
+      };
+    };
+    "csstype-3.0.5" = {
+      name = "csstype";
+      packageName = "csstype";
+      version = "3.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/csstype/-/csstype-3.0.5.tgz";
+        sha512 = "uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ==";
+      };
+    };
+    "cycle-1.0.3" = {
+      name = "cycle";
+      packageName = "cycle";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz";
+        sha1 = "21e80b2be8580f98b468f379430662b046c34ad2";
+      };
+    };
+    "debug-2.6.9" = {
+      name = "debug";
+      packageName = "debug";
+      version = "2.6.9";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz";
+        sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==";
+      };
+    };
+    "debug-3.2.7" = {
+      name = "debug";
+      packageName = "debug";
+      version = "3.2.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz";
+        sha512 = "CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==";
+      };
+    };
+    "decompress-response-4.2.1" = {
+      name = "decompress-response";
+      packageName = "decompress-response";
+      version = "4.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz";
+        sha512 = "jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==";
+      };
+    };
+    "decompress-response-6.0.0" = {
+      name = "decompress-response";
+      packageName = "decompress-response";
+      version = "6.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz";
+        sha512 = "aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==";
+      };
+    };
+    "deep-extend-0.6.0" = {
+      name = "deep-extend";
+      packageName = "deep-extend";
+      version = "0.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz";
+        sha512 = "LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==";
+      };
+    };
+    "defer-to-connect-2.0.0" = {
+      name = "defer-to-connect";
+      packageName = "defer-to-connect";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.0.tgz";
+        sha512 = "bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg==";
+      };
+    };
+    "delayed-stream-1.0.0" = {
+      name = "delayed-stream";
+      packageName = "delayed-stream";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
+        sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
+      };
+    };
+    "delegates-1.0.0" = {
+      name = "delegates";
+      packageName = "delegates";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz";
+        sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a";
+      };
+    };
+    "depd-1.1.2" = {
+      name = "depd";
+      packageName = "depd";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz";
+        sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
+      };
+    };
+    "depd-2.0.0" = {
+      name = "depd";
+      packageName = "depd";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz";
+        sha512 = "g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==";
+      };
+    };
+    "destroy-1.0.4" = {
+      name = "destroy";
+      packageName = "destroy";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz";
+        sha1 = "978857442c44749e4206613e37946205826abd80";
+      };
+    };
+    "detect-libc-1.0.3" = {
+      name = "detect-libc";
+      packageName = "detect-libc";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz";
+        sha1 = "fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b";
+      };
+    };
+    "diff-3.5.0" = {
+      name = "diff";
+      packageName = "diff";
+      version = "3.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz";
+        sha512 = "A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==";
+      };
+    };
+    "discord-markdown-git://github.com/Sorunome/discord-markdown.git#0f38420fdd41340d6eadd38cd5b71784ca954085" = {
+      name = "discord-markdown";
+      packageName = "discord-markdown";
+      version = "2.3.1";
+      src = fetchgit {
+        url = "git://github.com/Sorunome/discord-markdown.git";
+        rev = "0f38420fdd41340d6eadd38cd5b71784ca954085";
+        sha256 = "61a5ffd248b6d2784665fa710bfe4c39f241c75be07dbe53f5f48575a4df229c";
+      };
+    };
+    "dom-serializer-1.2.0" = {
+      name = "dom-serializer";
+      packageName = "dom-serializer";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.2.0.tgz";
+        sha512 = "n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA==";
+      };
+    };
+    "domelementtype-2.1.0" = {
+      name = "domelementtype";
+      packageName = "domelementtype";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz";
+        sha512 = "LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==";
+      };
+    };
+    "domhandler-3.3.0" = {
+      name = "domhandler";
+      packageName = "domhandler";
+      version = "3.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz";
+        sha512 = "J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==";
+      };
+    };
+    "domhandler-4.0.0" = {
+      name = "domhandler";
+      packageName = "domhandler";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/domhandler/-/domhandler-4.0.0.tgz";
+        sha512 = "KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA==";
+      };
+    };
+    "domutils-2.4.4" = {
+      name = "domutils";
+      packageName = "domutils";
+      version = "2.4.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/domutils/-/domutils-2.4.4.tgz";
+        sha512 = "jBC0vOsECI4OMdD0GC9mGn7NXPLb+Qt6KW1YDQzeQYRUFKmNG8lh7mO5HiELfr+lLQE7loDVI4QcAxV80HS+RA==";
+      };
+    };
+    "ee-first-1.1.1" = {
+      name = "ee-first";
+      packageName = "ee-first";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz";
+        sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
+      };
+    };
+    "enabled-2.0.0" = {
+      name = "enabled";
+      packageName = "enabled";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz";
+        sha512 = "AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==";
+      };
+    };
+    "encodeurl-1.0.2" = {
+      name = "encodeurl";
+      packageName = "encodeurl";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz";
+        sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
+      };
+    };
+    "end-of-stream-1.4.4" = {
+      name = "end-of-stream";
+      packageName = "end-of-stream";
+      version = "1.4.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz";
+        sha512 = "+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==";
+      };
+    };
+    "entities-1.1.2" = {
+      name = "entities";
+      packageName = "entities";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz";
+        sha512 = "f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==";
+      };
+    };
+    "entities-2.1.0" = {
+      name = "entities";
+      packageName = "entities";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz";
+        sha512 = "hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==";
+      };
+    };
+    "escape-html-1.0.3" = {
+      name = "escape-html";
+      packageName = "escape-html";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz";
+        sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
+      };
+    };
+    "escape-string-regexp-1.0.5" = {
+      name = "escape-string-regexp";
+      packageName = "escape-string-regexp";
+      version = "1.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
+        sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
+      };
+    };
+    "esprima-4.0.1" = {
+      name = "esprima";
+      packageName = "esprima";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz";
+        sha512 = "eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==";
+      };
+    };
+    "esutils-2.0.2" = {
+      name = "esutils";
+      packageName = "esutils";
+      version = "2.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz";
+        sha1 = "0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b";
+      };
+    };
+    "etag-1.8.1" = {
+      name = "etag";
+      packageName = "etag";
+      version = "1.8.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz";
+        sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887";
+      };
+    };
+    "event-target-shim-5.0.1" = {
+      name = "event-target-shim";
+      packageName = "event-target-shim";
+      version = "5.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz";
+        sha512 = "i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==";
+      };
+    };
+    "events-3.0.0" = {
+      name = "events";
+      packageName = "events";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/events/-/events-3.0.0.tgz";
+        sha512 = "Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==";
+      };
+    };
+    "events-3.2.0" = {
+      name = "events";
+      packageName = "events";
+      version = "3.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/events/-/events-3.2.0.tgz";
+        sha512 = "/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==";
+      };
+    };
+    "expand-template-2.0.3" = {
+      name = "expand-template";
+      packageName = "expand-template";
+      version = "2.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz";
+        sha512 = "XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==";
+      };
+    };
+    "expire-set-1.0.0" = {
+      name = "expire-set";
+      packageName = "expire-set";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/expire-set/-/expire-set-1.0.0.tgz";
+        sha512 = "wOQlqatf2sJtOabNk3gEPbGvo/C8tIUhzT3rz08+i7X+u1NV+UNY4p3Lzq8DxrW57mBML1Fp5qNeYt70Qnndpg==";
+      };
+    };
+    "express-4.17.1" = {
+      name = "express";
+      packageName = "express";
+      version = "4.17.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/express/-/express-4.17.1.tgz";
+        sha512 = "mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==";
+      };
+    };
+    "extend-shallow-2.0.1" = {
+      name = "extend-shallow";
+      packageName = "extend-shallow";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz";
+        sha1 = "51af7d614ad9a9f610ea1bafbb989d6b1c56890f";
+      };
+    };
+    "fast-safe-stringify-2.0.7" = {
+      name = "fast-safe-stringify";
+      packageName = "fast-safe-stringify";
+      version = "2.0.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz";
+        sha512 = "Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==";
+      };
+    };
+    "fecha-2.3.3" = {
+      name = "fecha";
+      packageName = "fecha";
+      version = "2.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz";
+        sha512 = "lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==";
+      };
+    };
+    "fecha-4.2.0" = {
+      name = "fecha";
+      packageName = "fecha";
+      version = "4.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz";
+        sha512 = "aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==";
+      };
+    };
+    "file-stream-rotator-0.4.1" = {
+      name = "file-stream-rotator";
+      packageName = "file-stream-rotator";
+      version = "0.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.4.1.tgz";
+        sha512 = "W3aa3QJEc8BS2MmdVpQiYLKHj3ijpto1gMDlsgCRSKfIUe6MwkcpODGPQ3vZfb0XvCeCqlu9CBQTN7oQri2TZQ==";
+      };
+    };
+    "file-type-12.4.2" = {
+      name = "file-type";
+      packageName = "file-type";
+      version = "12.4.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/file-type/-/file-type-12.4.2.tgz";
+        sha512 = "UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==";
+      };
+    };
+    "file-uri-to-path-1.0.0" = {
+      name = "file-uri-to-path";
+      packageName = "file-uri-to-path";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz";
+        sha512 = "0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==";
+      };
+    };
+    "finalhandler-1.1.2" = {
+      name = "finalhandler";
+      packageName = "finalhandler";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz";
+        sha512 = "aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==";
+      };
+    };
+    "find-replace-3.0.0" = {
+      name = "find-replace";
+      packageName = "find-replace";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz";
+        sha512 = "6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==";
+      };
+    };
+    "fn.name-1.1.0" = {
+      name = "fn.name";
+      packageName = "fn.name";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz";
+        sha512 = "GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==";
+      };
+    };
+    "forwarded-0.1.2" = {
+      name = "forwarded";
+      packageName = "forwarded";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz";
+        sha1 = "98c23dab1175657b8c0573e8ceccd91b0ff18c84";
+      };
+    };
+    "fresh-0.5.2" = {
+      name = "fresh";
+      packageName = "fresh";
+      version = "0.5.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz";
+        sha1 = "3d8cadd90d976569fa835ab1f8e4b23a105605a7";
+      };
+    };
+    "fs-constants-1.0.0" = {
+      name = "fs-constants";
+      packageName = "fs-constants";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz";
+        sha512 = "y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==";
+      };
+    };
+    "fs-minipass-1.2.7" = {
+      name = "fs-minipass";
+      packageName = "fs-minipass";
+      version = "1.2.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz";
+        sha512 = "GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==";
+      };
+    };
+    "fs.realpath-1.0.0" = {
+      name = "fs.realpath";
+      packageName = "fs.realpath";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
+        sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
+      };
+    };
+    "gauge-2.7.4" = {
+      name = "gauge";
+      packageName = "gauge";
+      version = "2.7.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz";
+        sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7";
+      };
+    };
+    "get-stream-5.2.0" = {
+      name = "get-stream";
+      packageName = "get-stream";
+      version = "5.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz";
+        sha512 = "nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==";
+      };
+    };
+    "github-from-package-0.0.0" = {
+      name = "github-from-package";
+      packageName = "github-from-package";
+      version = "0.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz";
+        sha1 = "97fb5d96bfde8973313f20e8288ef9a167fa64ce";
+      };
+    };
+    "glob-7.1.4" = {
+      name = "glob";
+      packageName = "glob";
+      version = "7.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz";
+        sha512 = "hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==";
+      };
+    };
+    "glob-to-regexp-0.4.1" = {
+      name = "glob-to-regexp";
+      packageName = "glob-to-regexp";
+      version = "0.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz";
+        sha512 = "lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==";
+      };
+    };
+    "got-11.6.0" = {
+      name = "got";
+      packageName = "got";
+      version = "11.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/got/-/got-11.6.0.tgz";
+        sha512 = "ErhWb4IUjQzJ3vGs3+RR12NWlBDDkRciFpAkQ1LPUxi6OnwhGj07gQxjPsyIk69s7qMihwKrKquV6VQq7JNYLA==";
+      };
+    };
+    "graceful-fs-4.2.4" = {
+      name = "graceful-fs";
+      packageName = "graceful-fs";
+      version = "4.2.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz";
+        sha512 = "WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==";
+      };
+    };
+    "has-flag-3.0.0" = {
+      name = "has-flag";
+      packageName = "has-flag";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz";
+        sha1 = "b5d454dc2199ae225699f3467e5a07f3b955bafd";
+      };
+    };
+    "has-flag-4.0.0" = {
+      name = "has-flag";
+      packageName = "has-flag";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz";
+        sha512 = "EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==";
+      };
+    };
+    "has-unicode-2.0.1" = {
+      name = "has-unicode";
+      packageName = "has-unicode";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz";
+        sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9";
+      };
+    };
+    "hash.js-1.1.7" = {
+      name = "hash.js";
+      packageName = "hash.js";
+      version = "1.1.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz";
+        sha512 = "taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==";
+      };
+    };
+    "hasha-5.2.2" = {
+      name = "hasha";
+      packageName = "hasha";
+      version = "5.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz";
+        sha512 = "Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==";
+      };
+    };
+    "he-1.2.0" = {
+      name = "he";
+      packageName = "he";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/he/-/he-1.2.0.tgz";
+        sha512 = "F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==";
+      };
+    };
+    "highlight.js-10.4.1" = {
+      name = "highlight.js";
+      packageName = "highlight.js";
+      version = "10.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/highlight.js/-/highlight.js-10.4.1.tgz";
+        sha512 = "yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg==";
+      };
+    };
+    "htmlencode-0.0.4" = {
+      name = "htmlencode";
+      packageName = "htmlencode";
+      version = "0.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/htmlencode/-/htmlencode-0.0.4.tgz";
+        sha1 = "f7e2d6afbe18a87a78e63ba3308e753766740e3f";
+      };
+    };
+    "htmlparser2-4.1.0" = {
+      name = "htmlparser2";
+      packageName = "htmlparser2";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz";
+        sha512 = "4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==";
+      };
+    };
+    "http-cache-semantics-4.1.0" = {
+      name = "http-cache-semantics";
+      packageName = "http-cache-semantics";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz";
+        sha512 = "carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==";
+      };
+    };
+    "http-errors-1.7.2" = {
+      name = "http-errors";
+      packageName = "http-errors";
+      version = "1.7.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz";
+        sha512 = "uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==";
+      };
+    };
+    "http2-wrapper-1.0.0-beta.5.2" = {
+      name = "http2-wrapper";
+      packageName = "http2-wrapper";
+      version = "1.0.0-beta.5.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz";
+        sha512 = "xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ==";
+      };
+    };
+    "iconv-lite-0.4.24" = {
+      name = "iconv-lite";
+      packageName = "iconv-lite";
+      version = "0.4.24";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz";
+        sha512 = "v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==";
+      };
+    };
+    "ieee754-1.2.1" = {
+      name = "ieee754";
+      packageName = "ieee754";
+      version = "1.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz";
+        sha512 = "dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==";
+      };
+    };
+    "ignore-walk-3.0.3" = {
+      name = "ignore-walk";
+      packageName = "ignore-walk";
+      version = "3.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz";
+        sha512 = "m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==";
+      };
+    };
+    "inflight-1.0.6" = {
+      name = "inflight";
+      packageName = "inflight";
+      version = "1.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
+        sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
+      };
+    };
+    "inherits-2.0.3" = {
+      name = "inherits";
+      packageName = "inherits";
+      version = "2.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
+        sha1 = "633c2c83e3da42a502f52466022480f4208261de";
+      };
+    };
+    "inherits-2.0.4" = {
+      name = "inherits";
+      packageName = "inherits";
+      version = "2.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz";
+        sha512 = "k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==";
+      };
+    };
+    "ini-1.3.8" = {
+      name = "ini";
+      packageName = "ini";
+      version = "1.3.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz";
+        sha512 = "JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==";
+      };
+    };
+    "integer-3.0.1" = {
+      name = "integer";
+      packageName = "integer";
+      version = "3.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/integer/-/integer-3.0.1.tgz";
+        sha512 = "OqtER6W2GIJTIcnT5o2B/pWGgvurnVOYs4OZCgay40QEIbMTnNq4R0KSaIw1TZyFtPWjm5aNM+pBBMTfc3exmw==";
+      };
+    };
+    "ipaddr.js-1.9.1" = {
+      name = "ipaddr.js";
+      packageName = "ipaddr.js";
+      version = "1.9.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz";
+        sha512 = "0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==";
+      };
+    };
+    "is-arrayish-0.3.2" = {
+      name = "is-arrayish";
+      packageName = "is-arrayish";
+      version = "0.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz";
+        sha512 = "eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==";
+      };
+    };
+    "is-extendable-0.1.1" = {
+      name = "is-extendable";
+      packageName = "is-extendable";
+      version = "0.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz";
+        sha1 = "62b110e289a471418e3ec36a617d472e301dfc89";
+      };
+    };
+    "is-fullwidth-code-point-1.0.0" = {
+      name = "is-fullwidth-code-point";
+      packageName = "is-fullwidth-code-point";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
+        sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
+      };
+    };
+    "is-promise-2.2.2" = {
+      name = "is-promise";
+      packageName = "is-promise";
+      version = "2.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz";
+        sha512 = "+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==";
+      };
+    };
+    "is-stream-2.0.0" = {
+      name = "is-stream";
+      packageName = "is-stream";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz";
+        sha512 = "XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==";
+      };
+    };
+    "isarray-1.0.0" = {
+      name = "isarray";
+      packageName = "isarray";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
+        sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
+      };
+    };
+    "js-tokens-4.0.0" = {
+      name = "js-tokens";
+      packageName = "js-tokens";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz";
+        sha512 = "RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==";
+      };
+    };
+    "js-yaml-3.13.1" = {
+      name = "js-yaml";
+      packageName = "js-yaml";
+      version = "3.13.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz";
+        sha512 = "YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==";
+      };
+    };
+    "json-buffer-3.0.1" = {
+      name = "json-buffer";
+      packageName = "json-buffer";
+      version = "3.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz";
+        sha512 = "4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==";
+      };
+    };
+    "keyv-4.0.1" = {
+      name = "keyv";
+      packageName = "keyv";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/keyv/-/keyv-4.0.1.tgz";
+        sha512 = "xz6Jv6oNkbhrFCvCP7HQa8AaII8y8LRpoSm661NOKLr4uHuBwhX4epXrPQgF3+xdJnN4Esm5X0xwY4bOlALOtw==";
+      };
+    };
+    "kuler-2.0.0" = {
+      name = "kuler";
+      packageName = "kuler";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz";
+        sha512 = "Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==";
+      };
+    };
+    "linkify-it-2.2.0" = {
+      name = "linkify-it";
+      packageName = "linkify-it";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz";
+        sha512 = "GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==";
+      };
+    };
+    "lodash-4.17.20" = {
+      name = "lodash";
+      packageName = "lodash";
+      version = "4.17.20";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz";
+        sha512 = "PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==";
+      };
+    };
+    "lodash.camelcase-4.3.0" = {
+      name = "lodash.camelcase";
+      packageName = "lodash.camelcase";
+      version = "4.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz";
+        sha1 = "b28aa6288a2b9fc651035c7711f65ab6190331a6";
+      };
+    };
+    "lodash.padend-4.6.1" = {
+      name = "lodash.padend";
+      packageName = "lodash.padend";
+      version = "4.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz";
+        sha1 = "53ccba047d06e158d311f45da625f4e49e6f166e";
+      };
+    };
+    "lodash.toarray-4.4.0" = {
+      name = "lodash.toarray";
+      packageName = "lodash.toarray";
+      version = "4.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz";
+        sha1 = "24c4bfcd6b2fba38bfd0594db1179d8e9b656561";
+      };
+    };
+    "logform-1.10.0" = {
+      name = "logform";
+      packageName = "logform";
+      version = "1.10.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/logform/-/logform-1.10.0.tgz";
+        sha512 = "em5ojIhU18fIMOw/333mD+ZLE2fis0EzXl1ZwHx4iQzmpQi6odNiY/t+ITNr33JZhT9/KEaH+UPIipr6a9EjWg==";
+      };
+    };
+    "logform-2.2.0" = {
+      name = "logform";
+      packageName = "logform";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz";
+        sha512 = "N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==";
+      };
+    };
+    "lowdb-1.0.0" = {
+      name = "lowdb";
+      packageName = "lowdb";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lowdb/-/lowdb-1.0.0.tgz";
+        sha512 = "2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==";
+      };
+    };
+    "lowercase-keys-2.0.0" = {
+      name = "lowercase-keys";
+      packageName = "lowercase-keys";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz";
+        sha512 = "tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==";
+      };
+    };
+    "lru-cache-6.0.0" = {
+      name = "lru-cache";
+      packageName = "lru-cache";
+      version = "6.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz";
+        sha512 = "Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==";
+      };
+    };
+    "markdown-it-9.1.0" = {
+      name = "markdown-it";
+      packageName = "markdown-it";
+      version = "9.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/markdown-it/-/markdown-it-9.1.0.tgz";
+        sha512 = "xHKG4C8iPriyfu/jc2hsCC045fKrMQ0VexX2F1FGYiRxDxqMB2aAhF8WauJ3fltn2kb90moGBkiiEdooGIg55w==";
+      };
+    };
+    "matrix-discord-parser-0.1.7" = {
+      name = "matrix-discord-parser";
+      packageName = "matrix-discord-parser";
+      version = "0.1.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/matrix-discord-parser/-/matrix-discord-parser-0.1.7.tgz";
+        sha512 = "zL1L52Wsc80IaVPXGVMjfumpN+PJ6zAuXJ6EKf8HTjPvPx4J03ybHHUrDPw455WxaJp00SmuDq+wZZyOZTvIeQ==";
+      };
+    };
+    "mdurl-1.0.1" = {
+      name = "mdurl";
+      packageName = "mdurl";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz";
+        sha1 = "fe85b2ec75a59037f2adfec100fd6c601761152e";
+      };
+    };
+    "media-typer-0.3.0" = {
+      name = "media-typer";
+      packageName = "media-typer";
+      version = "0.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz";
+        sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
+      };
+    };
+    "merge-descriptors-1.0.1" = {
+      name = "merge-descriptors";
+      packageName = "merge-descriptors";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz";
+        sha1 = "b00aaa556dd8b44568150ec9d1b953f3f90cbb61";
+      };
+    };
+    "methods-1.1.2" = {
+      name = "methods";
+      packageName = "methods";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz";
+        sha1 = "5529a4d67654134edcc5266656835b0f851afcee";
+      };
+    };
+    "mime-1.6.0" = {
+      name = "mime";
+      packageName = "mime";
+      version = "1.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz";
+        sha512 = "x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==";
+      };
+    };
+    "mime-2.5.0" = {
+      name = "mime";
+      packageName = "mime";
+      version = "2.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz";
+        sha512 = "ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==";
+      };
+    };
+    "mime-db-1.43.0" = {
+      name = "mime-db";
+      packageName = "mime-db";
+      version = "1.43.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz";
+        sha512 = "+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==";
+      };
+    };
+    "mime-types-2.1.26" = {
+      name = "mime-types";
+      packageName = "mime-types";
+      version = "2.1.26";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz";
+        sha512 = "01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==";
+      };
+    };
+    "mimic-response-1.0.1" = {
+      name = "mimic-response";
+      packageName = "mimic-response";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz";
+        sha512 = "j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==";
+      };
+    };
+    "mimic-response-2.1.0" = {
+      name = "mimic-response";
+      packageName = "mimic-response";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz";
+        sha512 = "wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==";
+      };
+    };
+    "mimic-response-3.1.0" = {
+      name = "mimic-response";
+      packageName = "mimic-response";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz";
+        sha512 = "z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==";
+      };
+    };
+    "minimalistic-assert-1.0.1" = {
+      name = "minimalistic-assert";
+      packageName = "minimalistic-assert";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz";
+        sha512 = "UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==";
+      };
+    };
+    "minimatch-3.0.4" = {
+      name = "minimatch";
+      packageName = "minimatch";
+      version = "3.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
+        sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==";
+      };
+    };
+    "minimist-1.2.5" = {
+      name = "minimist";
+      packageName = "minimist";
+      version = "1.2.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz";
+        sha512 = "FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==";
+      };
+    };
+    "minipass-2.9.0" = {
+      name = "minipass";
+      packageName = "minipass";
+      version = "2.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz";
+        sha512 = "wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==";
+      };
+    };
+    "minizlib-1.3.3" = {
+      name = "minizlib";
+      packageName = "minizlib";
+      version = "1.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz";
+        sha512 = "6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==";
+      };
+    };
+    "mkdirp-0.5.5" = {
+      name = "mkdirp";
+      packageName = "mkdirp";
+      version = "0.5.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz";
+        sha512 = "NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==";
+      };
+    };
+    "mkdirp-1.0.4" = {
+      name = "mkdirp";
+      packageName = "mkdirp";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz";
+        sha512 = "vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==";
+      };
+    };
+    "mkdirp-classic-0.5.3" = {
+      name = "mkdirp-classic";
+      packageName = "mkdirp-classic";
+      version = "0.5.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz";
+        sha512 = "gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==";
+      };
+    };
+    "moment-2.29.1" = {
+      name = "moment";
+      packageName = "moment";
+      version = "2.29.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz";
+        sha512 = "kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==";
+      };
+    };
+    "morgan-1.10.0" = {
+      name = "morgan";
+      packageName = "morgan";
+      version = "1.10.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz";
+        sha512 = "AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==";
+      };
+    };
+    "ms-2.0.0" = {
+      name = "ms";
+      packageName = "ms";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz";
+        sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
+      };
+    };
+    "ms-2.1.1" = {
+      name = "ms";
+      packageName = "ms";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz";
+        sha512 = "tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==";
+      };
+    };
+    "ms-2.1.3" = {
+      name = "ms";
+      packageName = "ms";
+      version = "2.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz";
+        sha512 = "6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==";
+      };
+    };
+    "mx-puppet-bridge-0.1.4" = {
+      name = "mx-puppet-bridge";
+      packageName = "mx-puppet-bridge";
+      version = "0.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mx-puppet-bridge/-/mx-puppet-bridge-0.1.4.tgz";
+        sha512 = "Jg4hszVqQv1n35Mvb5HcfK4VafjB0LaCEay8ylgiu/M2oIPE0fadFNdQpkwssXmShDzSeth/xga3HgP8G6O5Fg==";
+      };
+    };
+    "nan-2.14.2" = {
+      name = "nan";
+      packageName = "nan";
+      version = "2.14.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz";
+        sha512 = "M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==";
+      };
+    };
+    "napi-build-utils-1.0.2" = {
+      name = "napi-build-utils";
+      packageName = "napi-build-utils";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz";
+        sha512 = "ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==";
+      };
+    };
+    "needle-2.6.0" = {
+      name = "needle";
+      packageName = "needle";
+      version = "2.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz";
+        sha512 = "KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==";
+      };
+    };
+    "negotiator-0.6.2" = {
+      name = "negotiator";
+      packageName = "negotiator";
+      version = "0.6.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz";
+        sha512 = "hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==";
+      };
+    };
+    "node-abi-2.19.3" = {
+      name = "node-abi";
+      packageName = "node-abi";
+      version = "2.19.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/node-abi/-/node-abi-2.19.3.tgz";
+        sha512 = "9xZrlyfvKhWme2EXFKQhZRp1yNWT/uI1luYPr3sFl+H4keYY4xR+1jO7mvTTijIsHf1M+QDe9uWuKeEpLInIlg==";
+      };
+    };
+    "node-emoji-1.10.0" = {
+      name = "node-emoji";
+      packageName = "node-emoji";
+      version = "1.10.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz";
+        sha512 = "Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==";
+      };
+    };
+    "node-fetch-2.6.1" = {
+      name = "node-fetch";
+      packageName = "node-fetch";
+      version = "2.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz";
+        sha512 = "V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==";
+      };
+    };
+    "node-html-parser-1.4.9" = {
+      name = "node-html-parser";
+      packageName = "node-html-parser";
+      version = "1.4.9";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/node-html-parser/-/node-html-parser-1.4.9.tgz";
+        sha512 = "UVcirFD1Bn0O+TSmloHeHqZZCxHjvtIeGdVdGMhyZ8/PWlEiZaZ5iJzR189yKZr8p0FXN58BUeC7RHRkf/KYGw==";
+      };
+    };
+    "node-pre-gyp-0.11.0" = {
+      name = "node-pre-gyp";
+      packageName = "node-pre-gyp";
+      version = "0.11.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz";
+        sha512 = "TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==";
+      };
+    };
+    "noop-logger-0.1.1" = {
+      name = "noop-logger";
+      packageName = "noop-logger";
+      version = "0.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz";
+        sha1 = "94a2b1633c4f1317553007d8966fd0e841b6a4c2";
+      };
+    };
+    "nopt-4.0.3" = {
+      name = "nopt";
+      packageName = "nopt";
+      version = "4.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz";
+        sha512 = "CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==";
+      };
+    };
+    "normalize-url-4.5.0" = {
+      name = "normalize-url";
+      packageName = "normalize-url";
+      version = "4.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz";
+        sha512 = "2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==";
+      };
+    };
+    "normalize-version-1.0.5" = {
+      name = "normalize-version";
+      packageName = "normalize-version";
+      version = "1.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/normalize-version/-/normalize-version-1.0.5.tgz";
+        sha1 = "a6a2b9002dc6fa2e5f15ec2f0b2c0284fb499712";
+      };
+    };
+    "npm-bundled-1.1.1" = {
+      name = "npm-bundled";
+      packageName = "npm-bundled";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz";
+        sha512 = "gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==";
+      };
+    };
+    "npm-normalize-package-bin-1.0.1" = {
+      name = "npm-normalize-package-bin";
+      packageName = "npm-normalize-package-bin";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz";
+        sha512 = "EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==";
+      };
+    };
+    "npm-packlist-1.4.8" = {
+      name = "npm-packlist";
+      packageName = "npm-packlist";
+      version = "1.4.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz";
+        sha512 = "5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==";
+      };
+    };
+    "npmlog-4.1.2" = {
+      name = "npmlog";
+      packageName = "npmlog";
+      version = "4.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz";
+        sha512 = "2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==";
+      };
+    };
+    "number-is-nan-1.0.1" = {
+      name = "number-is-nan";
+      packageName = "number-is-nan";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz";
+        sha1 = "097b602b53422a522c1afb8790318336941a011d";
+      };
+    };
+    "object-assign-4.1.1" = {
+      name = "object-assign";
+      packageName = "object-assign";
+      version = "4.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz";
+        sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
+      };
+    };
+    "object-hash-1.3.1" = {
+      name = "object-hash";
+      packageName = "object-hash";
+      version = "1.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz";
+        sha512 = "OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==";
+      };
+    };
+    "on-finished-2.3.0" = {
+      name = "on-finished";
+      packageName = "on-finished";
+      version = "2.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz";
+        sha1 = "20f1336481b083cd75337992a16971aa2d906947";
+      };
+    };
+    "on-headers-1.0.2" = {
+      name = "on-headers";
+      packageName = "on-headers";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz";
+        sha512 = "pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==";
+      };
+    };
+    "once-1.4.0" = {
+      name = "once";
+      packageName = "once";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
+        sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
+      };
+    };
+    "one-time-1.0.0" = {
+      name = "one-time";
+      packageName = "one-time";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz";
+        sha512 = "5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==";
+      };
+    };
+    "os-homedir-1.0.2" = {
+      name = "os-homedir";
+      packageName = "os-homedir";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz";
+        sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
+      };
+    };
+    "os-tmpdir-1.0.2" = {
+      name = "os-tmpdir";
+      packageName = "os-tmpdir";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
+        sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
+      };
+    };
+    "osenv-0.1.5" = {
+      name = "osenv";
+      packageName = "osenv";
+      version = "0.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz";
+        sha512 = "0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==";
+      };
+    };
+    "p-cancelable-2.0.0" = {
+      name = "p-cancelable";
+      packageName = "p-cancelable";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz";
+        sha512 = "wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==";
+      };
+    };
+    "packet-reader-1.0.0" = {
+      name = "packet-reader";
+      packageName = "packet-reader";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz";
+        sha512 = "HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==";
+      };
+    };
+    "parse-srcset-1.0.2" = {
+      name = "parse-srcset";
+      packageName = "parse-srcset";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz";
+        sha1 = "f2bd221f6cc970a938d88556abc589caaaa2bde1";
+      };
+    };
+    "parseurl-1.3.3" = {
+      name = "parseurl";
+      packageName = "parseurl";
+      version = "1.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz";
+        sha512 = "CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==";
+      };
+    };
+    "path-0.12.7" = {
+      name = "path";
+      packageName = "path";
+      version = "0.12.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path/-/path-0.12.7.tgz";
+        sha1 = "d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f";
+      };
+    };
+    "path-is-absolute-1.0.1" = {
+      name = "path-is-absolute";
+      packageName = "path-is-absolute";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
+        sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
+      };
+    };
+    "path-parse-1.0.6" = {
+      name = "path-parse";
+      packageName = "path-parse";
+      version = "1.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz";
+        sha512 = "GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==";
+      };
+    };
+    "path-to-regexp-0.1.7" = {
+      name = "path-to-regexp";
+      packageName = "path-to-regexp";
+      version = "0.1.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz";
+        sha1 = "df604178005f522f15eb4490e7247a1bfaa67f8c";
+      };
+    };
+    "pg-8.5.1" = {
+      name = "pg";
+      packageName = "pg";
+      version = "8.5.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg/-/pg-8.5.1.tgz";
+        sha512 = "9wm3yX9lCfjvA98ybCyw2pADUivyNWT/yIP4ZcDVpMN0og70BUWYEGXPCTAQdGTAqnytfRADb7NERrY1qxhIqw==";
+      };
+    };
+    "pg-connection-string-2.4.0" = {
+      name = "pg-connection-string";
+      packageName = "pg-connection-string";
+      version = "2.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.4.0.tgz";
+        sha512 = "3iBXuv7XKvxeMrIgym7njT+HlZkwZqqGX4Bu9cci8xHZNT+Um1gWKqCsAzcC0d95rcKMU5WBg6YRUcHyV0HZKQ==";
+      };
+    };
+    "pg-int8-1.0.1" = {
+      name = "pg-int8";
+      packageName = "pg-int8";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz";
+        sha512 = "WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==";
+      };
+    };
+    "pg-minify-1.6.2" = {
+      name = "pg-minify";
+      packageName = "pg-minify";
+      version = "1.6.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg-minify/-/pg-minify-1.6.2.tgz";
+        sha512 = "1KdmFGGTP6jplJoI8MfvRlfvMiyBivMRP7/ffh4a11RUFJ7kC2J0ZHlipoKiH/1hz+DVgceon9U2qbaHpPeyPg==";
+      };
+    };
+    "pg-pool-3.2.2" = {
+      name = "pg-pool";
+      packageName = "pg-pool";
+      version = "3.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg-pool/-/pg-pool-3.2.2.tgz";
+        sha512 = "ORJoFxAlmmros8igi608iVEbQNNZlp89diFVx6yV5v+ehmpMY9sK6QgpmgoXbmkNaBAx8cOOZh9g80kJv1ooyA==";
+      };
+    };
+    "pg-promise-10.9.1" = {
+      name = "pg-promise";
+      packageName = "pg-promise";
+      version = "10.9.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg-promise/-/pg-promise-10.9.1.tgz";
+        sha512 = "Om5sYmsm2NWXP+D0Soappb4fuidER9qNLcnVo9nBPFqwPfpnBZZPzzLaVvwBXs//+kJ9L4bBTXm2iWNAp39e2A==";
+      };
+    };
+    "pg-protocol-1.4.0" = {
+      name = "pg-protocol";
+      packageName = "pg-protocol";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.4.0.tgz";
+        sha512 = "El+aXWcwG/8wuFICMQjM5ZSAm6OWiJicFdNYo+VY3QP+8vI4SvLIWVe51PppTzMhikUJR+PsyIFKqfdXPz/yxA==";
+      };
+    };
+    "pg-types-2.2.0" = {
+      name = "pg-types";
+      packageName = "pg-types";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz";
+        sha512 = "qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==";
+      };
+    };
+    "pgpass-1.0.4" = {
+      name = "pgpass";
+      packageName = "pgpass";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pgpass/-/pgpass-1.0.4.tgz";
+        sha512 = "YmuA56alyBq7M59vxVBfPJrGSozru8QAdoNlWuW3cz8l+UX3cWge0vTvjKhsSHSJpo3Bom8/Mm6hf0TR5GY0+w==";
+      };
+    };
+    "pify-3.0.0" = {
+      name = "pify";
+      packageName = "pify";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz";
+        sha1 = "e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176";
+      };
+    };
+    "postcss-7.0.35" = {
+      name = "postcss";
+      packageName = "postcss";
+      version = "7.0.35";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz";
+        sha512 = "3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==";
+      };
+    };
+    "postgres-array-2.0.0" = {
+      name = "postgres-array";
+      packageName = "postgres-array";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz";
+        sha512 = "VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==";
+      };
+    };
+    "postgres-bytea-1.0.0" = {
+      name = "postgres-bytea";
+      packageName = "postgres-bytea";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz";
+        sha1 = "027b533c0aa890e26d172d47cf9ccecc521acd35";
+      };
+    };
+    "postgres-date-1.0.7" = {
+      name = "postgres-date";
+      packageName = "postgres-date";
+      version = "1.0.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz";
+        sha512 = "suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==";
+      };
+    };
+    "postgres-interval-1.2.0" = {
+      name = "postgres-interval";
+      packageName = "postgres-interval";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz";
+        sha512 = "9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==";
+      };
+    };
+    "prebuild-install-5.3.6" = {
+      name = "prebuild-install";
+      packageName = "prebuild-install";
+      version = "5.3.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.6.tgz";
+        sha512 = "s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg==";
+      };
+    };
+    "prism-media-1.2.3" = {
+      name = "prism-media";
+      packageName = "prism-media";
+      version = "1.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/prism-media/-/prism-media-1.2.3.tgz";
+        sha512 = "fSrR66n0l6roW9Rx4rSLMyTPTjRTiXy5RVqDOurACQ6si1rKHHKDU5gwBJoCsIV0R3o9gi+K50akl/qyw1C74A==";
+      };
+    };
+    "process-0.11.10" = {
+      name = "process";
+      packageName = "process";
+      version = "0.11.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/process/-/process-0.11.10.tgz";
+        sha1 = "7332300e840161bda3e69a1d1d91a7d4bc16f182";
+      };
+    };
+    "process-nextick-args-2.0.1" = {
+      name = "process-nextick-args";
+      packageName = "process-nextick-args";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz";
+        sha512 = "3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==";
+      };
+    };
+    "prom-client-13.0.0" = {
+      name = "prom-client";
+      packageName = "prom-client";
+      version = "13.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/prom-client/-/prom-client-13.0.0.tgz";
+        sha512 = "M7ZNjIO6x+2R/vjSD13yjJPjpoZA8eEwH2Bp2Re0/PvzozD7azikv+SaBtZes4Q1ca/xHjZ4RSCuTag3YZLg1A==";
+      };
+    };
+    "proxy-addr-2.0.6" = {
+      name = "proxy-addr";
+      packageName = "proxy-addr";
+      version = "2.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz";
+        sha512 = "dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==";
+      };
+    };
+    "pump-3.0.0" = {
+      name = "pump";
+      packageName = "pump";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz";
+        sha512 = "LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==";
+      };
+    };
+    "qs-6.7.0" = {
+      name = "qs";
+      packageName = "qs";
+      version = "6.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz";
+        sha512 = "VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==";
+      };
+    };
+    "quick-lru-5.1.1" = {
+      name = "quick-lru";
+      packageName = "quick-lru";
+      version = "5.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz";
+        sha512 = "WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==";
+      };
+    };
+    "range-parser-1.2.1" = {
+      name = "range-parser";
+      packageName = "range-parser";
+      version = "1.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz";
+        sha512 = "Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==";
+      };
+    };
+    "raw-body-2.4.0" = {
+      name = "raw-body";
+      packageName = "raw-body";
+      version = "2.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz";
+        sha512 = "4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==";
+      };
+    };
+    "rc-1.2.8" = {
+      name = "rc";
+      packageName = "rc";
+      version = "1.2.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz";
+        sha512 = "y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==";
+      };
+    };
+    "readable-stream-2.3.7" = {
+      name = "readable-stream";
+      packageName = "readable-stream";
+      version = "2.3.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz";
+        sha512 = "Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==";
+      };
+    };
+    "readable-stream-3.6.0" = {
+      name = "readable-stream";
+      packageName = "readable-stream";
+      version = "3.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz";
+        sha512 = "BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==";
+      };
+    };
+    "reduce-flatten-1.0.1" = {
+      name = "reduce-flatten";
+      packageName = "reduce-flatten";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz";
+        sha1 = "258c78efd153ddf93cb561237f61184f3696e327";
+      };
+    };
+    "resolve-1.11.1" = {
+      name = "resolve";
+      packageName = "resolve";
+      version = "1.11.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz";
+        sha512 = "vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==";
+      };
+    };
+    "resolve-alpn-1.0.0" = {
+      name = "resolve-alpn";
+      packageName = "resolve-alpn";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.0.0.tgz";
+        sha512 = "rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA==";
+      };
+    };
+    "responselike-2.0.0" = {
+      name = "responselike";
+      packageName = "responselike";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz";
+        sha512 = "xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==";
+      };
+    };
+    "rimraf-2.7.1" = {
+      name = "rimraf";
+      packageName = "rimraf";
+      version = "2.7.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz";
+        sha512 = "uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==";
+      };
+    };
+    "safe-buffer-5.1.2" = {
+      name = "safe-buffer";
+      packageName = "safe-buffer";
+      version = "5.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz";
+        sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==";
+      };
+    };
+    "safer-buffer-2.1.2" = {
+      name = "safer-buffer";
+      packageName = "safer-buffer";
+      version = "2.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
+        sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
+      };
+    };
+    "sanitize-html-1.27.5" = {
+      name = "sanitize-html";
+      packageName = "sanitize-html";
+      version = "1.27.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.27.5.tgz";
+        sha512 = "M4M5iXDAUEcZKLXkmk90zSYWEtk5NH3JmojQxKxV371fnMh+x9t1rqdmXaGoyEHw3z/X/8vnFhKjGL5xFGOJ3A==";
+      };
+    };
+    "sax-1.2.4" = {
+      name = "sax";
+      packageName = "sax";
+      version = "1.2.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz";
+        sha512 = "NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==";
+      };
+    };
+    "semver-5.7.0" = {
+      name = "semver";
+      packageName = "semver";
+      version = "5.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz";
+        sha512 = "Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==";
+      };
+    };
+    "semver-6.3.0" = {
+      name = "semver";
+      packageName = "semver";
+      version = "6.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz";
+        sha512 = "b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==";
+      };
+    };
+    "semver-closest-0.1.2" = {
+      name = "semver-closest";
+      packageName = "semver-closest";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/semver-closest/-/semver-closest-0.1.2.tgz";
+        sha512 = "Q6qk0bPNlK5zG62mWFC8L0Qc6OJX76XRWxiPgZyrh98IZTL3HPErgUlPfCyrAPsHVpU+YP4lf5Mz+LzpId91Og==";
+      };
+    };
+    "send-0.17.1" = {
+      name = "send";
+      packageName = "send";
+      version = "0.17.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/send/-/send-0.17.1.tgz";
+        sha512 = "BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==";
+      };
+    };
+    "serve-static-1.14.1" = {
+      name = "serve-static";
+      packageName = "serve-static";
+      version = "1.14.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz";
+        sha512 = "JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==";
+      };
+    };
+    "set-blocking-2.0.0" = {
+      name = "set-blocking";
+      packageName = "set-blocking";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz";
+        sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
+      };
+    };
+    "setimmediate-1.0.5" = {
+      name = "setimmediate";
+      packageName = "setimmediate";
+      version = "1.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz";
+        sha1 = "290cbb232e306942d7d7ea9b83732ab7856f8285";
+      };
+    };
+    "setprototypeof-1.1.1" = {
+      name = "setprototypeof";
+      packageName = "setprototypeof";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz";
+        sha512 = "JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==";
+      };
+    };
+    "signal-exit-3.0.3" = {
+      name = "signal-exit";
+      packageName = "signal-exit";
+      version = "3.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz";
+        sha512 = "VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==";
+      };
+    };
+    "simple-concat-1.0.1" = {
+      name = "simple-concat";
+      packageName = "simple-concat";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz";
+        sha512 = "cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==";
+      };
+    };
+    "simple-get-3.1.0" = {
+      name = "simple-get";
+      packageName = "simple-get";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz";
+        sha512 = "bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==";
+      };
+    };
+    "simple-markdown-0.7.2" = {
+      name = "simple-markdown";
+      packageName = "simple-markdown";
+      version = "0.7.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/simple-markdown/-/simple-markdown-0.7.2.tgz";
+        sha512 = "XfCvqqzMyzRj4L7eIxJgGaQ2Gaxr20GhTFMB+1yuY8q3xffjzmOg4Q5tC0kcaJPV42NNUHCQDaRK6jzi3/RhrA==";
+      };
+    };
+    "simple-swizzle-0.2.2" = {
+      name = "simple-swizzle";
+      packageName = "simple-swizzle";
+      version = "0.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz";
+        sha1 = "a4da6b635ffcccca33f70d17cb92592de95e557a";
+      };
+    };
+    "source-map-0.6.1" = {
+      name = "source-map";
+      packageName = "source-map";
+      version = "0.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz";
+        sha512 = "UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==";
+      };
+    };
+    "spex-3.2.0" = {
+      name = "spex";
+      packageName = "spex";
+      version = "3.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/spex/-/spex-3.2.0.tgz";
+        sha512 = "9srjJM7NaymrpwMHvSmpDeIK5GoRMX/Tq0E8aOlDPS54dDnDUIp30DrP9SphMPEETDLzEM9+4qo+KipmbtPecg==";
+      };
+    };
+    "split2-3.2.2" = {
+      name = "split2";
+      packageName = "split2";
+      version = "3.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz";
+        sha512 = "9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==";
+      };
+    };
+    "sprintf-js-1.0.3" = {
+      name = "sprintf-js";
+      packageName = "sprintf-js";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz";
+        sha1 = "04e6926f662895354f3dd015203633b857297e2c";
+      };
+    };
+    "stack-trace-0.0.10" = {
+      name = "stack-trace";
+      packageName = "stack-trace";
+      version = "0.0.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz";
+        sha1 = "547c70b347e8d32b4e108ea1a2a159e5fdde19c0";
+      };
+    };
+    "statuses-1.5.0" = {
+      name = "statuses";
+      packageName = "statuses";
+      version = "1.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz";
+        sha1 = "161c7dac177659fd9811f43771fa99381478628c";
+      };
+    };
+    "steno-0.4.4" = {
+      name = "steno";
+      packageName = "steno";
+      version = "0.4.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/steno/-/steno-0.4.4.tgz";
+        sha1 = "071105bdfc286e6615c0403c27e9d7b5dcb855cb";
+      };
+    };
+    "string-width-1.0.2" = {
+      name = "string-width";
+      packageName = "string-width";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz";
+        sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
+      };
+    };
+    "string_decoder-1.1.1" = {
+      name = "string_decoder";
+      packageName = "string_decoder";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz";
+        sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==";
+      };
+    };
+    "strip-ansi-3.0.1" = {
+      name = "strip-ansi";
+      packageName = "strip-ansi";
+      version = "3.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
+        sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
+      };
+    };
+    "strip-json-comments-2.0.1" = {
+      name = "strip-json-comments";
+      packageName = "strip-json-comments";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz";
+        sha1 = "3c531942e908c2697c0ec344858c286c7ca0a60a";
+      };
+    };
+    "supports-color-5.5.0" = {
+      name = "supports-color";
+      packageName = "supports-color";
+      version = "5.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz";
+        sha512 = "QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==";
+      };
+    };
+    "supports-color-6.1.0" = {
+      name = "supports-color";
+      packageName = "supports-color";
+      version = "6.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz";
+        sha512 = "qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==";
+      };
+    };
+    "supports-color-7.2.0" = {
+      name = "supports-color";
+      packageName = "supports-color";
+      version = "7.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz";
+        sha512 = "qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==";
+      };
+    };
+    "table-layout-0.4.5" = {
+      name = "table-layout";
+      packageName = "table-layout";
+      version = "0.4.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/table-layout/-/table-layout-0.4.5.tgz";
+        sha512 = "zTvf0mcggrGeTe/2jJ6ECkJHAQPIYEwDoqsiqBjI24mvRmQbInK5jq33fyypaCBxX08hMkfmdOqj6haT33EqWw==";
+      };
+    };
+    "tar-4.4.10" = {
+      name = "tar";
+      packageName = "tar";
+      version = "4.4.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tar/-/tar-4.4.10.tgz";
+        sha512 = "g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA==";
+      };
+    };
+    "tar-fs-2.1.1" = {
+      name = "tar-fs";
+      packageName = "tar-fs";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz";
+        sha512 = "V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==";
+      };
+    };
+    "tar-stream-2.2.0" = {
+      name = "tar-stream";
+      packageName = "tar-stream";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz";
+        sha512 = "ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==";
+      };
+    };
+    "tdigest-0.1.1" = {
+      name = "tdigest";
+      packageName = "tdigest";
+      version = "0.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tdigest/-/tdigest-0.1.1.tgz";
+        sha1 = "2e3cb2c39ea449e55d1e6cd91117accca4588021";
+      };
+    };
+    "text-hex-1.0.0" = {
+      name = "text-hex";
+      packageName = "text-hex";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz";
+        sha512 = "uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==";
+      };
+    };
+    "toidentifier-1.0.0" = {
+      name = "toidentifier";
+      packageName = "toidentifier";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz";
+        sha512 = "yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==";
+      };
+    };
+    "triple-beam-1.3.0" = {
+      name = "triple-beam";
+      packageName = "triple-beam";
+      version = "1.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz";
+        sha512 = "XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==";
+      };
+    };
+    "tslib-1.10.0" = {
+      name = "tslib";
+      packageName = "tslib";
+      version = "1.10.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz";
+        sha512 = "qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==";
+      };
+    };
+    "tslint-5.18.0" = {
+      name = "tslint";
+      packageName = "tslint";
+      version = "5.18.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tslint/-/tslint-5.18.0.tgz";
+        sha512 = "Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w==";
+      };
+    };
+    "tsutils-2.29.0" = {
+      name = "tsutils";
+      packageName = "tsutils";
+      version = "2.29.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz";
+        sha512 = "g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==";
+      };
+    };
+    "tunnel-agent-0.6.0" = {
+      name = "tunnel-agent";
+      packageName = "tunnel-agent";
+      version = "0.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
+        sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
+      };
+    };
+    "tweetnacl-1.0.3" = {
+      name = "tweetnacl";
+      packageName = "tweetnacl";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz";
+        sha512 = "6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==";
+      };
+    };
+    "type-fest-0.8.1" = {
+      name = "type-fest";
+      packageName = "type-fest";
+      version = "0.8.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz";
+        sha512 = "4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==";
+      };
+    };
+    "type-is-1.6.18" = {
+      name = "type-is";
+      packageName = "type-is";
+      version = "1.6.18";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz";
+        sha512 = "TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==";
+      };
+    };
+    "typescript-3.7.4" = {
+      name = "typescript";
+      packageName = "typescript";
+      version = "3.7.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/typescript/-/typescript-3.7.4.tgz";
+        sha512 = "A25xv5XCtarLwXpcDNZzCGvW2D1S3/bACratYBx2sax8PefsFhlYmkQicKHvpYflFS8if4zne5zT5kpJ7pzuvw==";
+      };
+    };
+    "typical-2.6.1" = {
+      name = "typical";
+      packageName = "typical";
+      version = "2.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz";
+        sha1 = "5c080e5d661cbbe38259d2e70a3c7253e873881d";
+      };
+    };
+    "typical-4.0.0" = {
+      name = "typical";
+      packageName = "typical";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz";
+        sha512 = "VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==";
+      };
+    };
+    "uc.micro-1.0.6" = {
+      name = "uc.micro";
+      packageName = "uc.micro";
+      version = "1.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz";
+        sha512 = "8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==";
+      };
+    };
+    "unescape-1.0.1" = {
+      name = "unescape";
+      packageName = "unescape";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/unescape/-/unescape-1.0.1.tgz";
+        sha512 = "O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==";
+      };
+    };
+    "unescape-html-1.1.0" = {
+      name = "unescape-html";
+      packageName = "unescape-html";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/unescape-html/-/unescape-html-1.1.0.tgz";
+        sha512 = "O9/yBNqIkArjS597iHez5hAaAdn7b8/230SX8IncgXAX5tWI9XlEQYaz6Qbou0Sloa9n6lx9G5s6hg5qhJyzGg==";
+      };
+    };
+    "unpipe-1.0.0" = {
+      name = "unpipe";
+      packageName = "unpipe";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz";
+        sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
+      };
+    };
+    "useragent-generator-1.1.1-amkt-22079-finish.0" = {
+      name = "useragent-generator";
+      packageName = "useragent-generator";
+      version = "1.1.1-amkt-22079-finish.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/useragent-generator/-/useragent-generator-1.1.1-amkt-22079-finish.0.tgz";
+        sha512 = "jUVHvx1t3bVjx2dI9fG4iKzjO5WA6qtjWaR/PitNvd6zQMJNlFYehNwRUaAAKkhBCkw1T0U9e2oG9Sg3wSmc6Q==";
+      };
+    };
+    "util-0.10.4" = {
+      name = "util";
+      packageName = "util";
+      version = "0.10.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/util/-/util-0.10.4.tgz";
+        sha512 = "0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==";
+      };
+    };
+    "util-deprecate-1.0.2" = {
+      name = "util-deprecate";
+      packageName = "util-deprecate";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
+        sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
+      };
+    };
+    "utils-merge-1.0.1" = {
+      name = "utils-merge";
+      packageName = "utils-merge";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz";
+        sha1 = "9f95710f50a267947b2ccc124741c1028427e713";
+      };
+    };
+    "uuid-3.4.0" = {
+      name = "uuid";
+      packageName = "uuid";
+      version = "3.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz";
+        sha512 = "HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==";
+      };
+    };
+    "vary-1.1.2" = {
+      name = "vary";
+      packageName = "vary";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz";
+        sha1 = "2299f02c6ded30d4a5961b0b9f74524a18f634fc";
+      };
+    };
+    "which-pm-runs-1.0.0" = {
+      name = "which-pm-runs";
+      packageName = "which-pm-runs";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz";
+        sha1 = "670b3afbc552e0b55df6b7780ca74615f23ad1cb";
+      };
+    };
+    "wide-align-1.1.3" = {
+      name = "wide-align";
+      packageName = "wide-align";
+      version = "1.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz";
+        sha512 = "QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==";
+      };
+    };
+    "winston-3.3.3" = {
+      name = "winston";
+      packageName = "winston";
+      version = "3.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz";
+        sha512 = "oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==";
+      };
+    };
+    "winston-compat-0.1.5" = {
+      name = "winston-compat";
+      packageName = "winston-compat";
+      version = "0.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/winston-compat/-/winston-compat-0.1.5.tgz";
+        sha512 = "EPvPcHT604AV3Ji6d3+vX8ENKIml9VSxMRnPQ+cuK/FX6f3hvPP2hxyoeeCOCFvDrJEujalfcKWlWPvAnFyS9g==";
+      };
+    };
+    "winston-daily-rotate-file-3.10.0" = {
+      name = "winston-daily-rotate-file";
+      packageName = "winston-daily-rotate-file";
+      version = "3.10.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-3.10.0.tgz";
+        sha512 = "KO8CfbI2CvdR3PaFApEH02GPXiwJ+vbkF1mCkTlvRIoXFI8EFlf1ACcuaahXTEiDEKCii6cNe95gsL4ZkbnphA==";
+      };
+    };
+    "winston-transport-4.4.0" = {
+      name = "winston-transport";
+      packageName = "winston-transport";
+      version = "4.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz";
+        sha512 = "Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==";
+      };
+    };
+    "wordwrapjs-3.0.0" = {
+      name = "wordwrapjs";
+      packageName = "wordwrapjs";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-3.0.0.tgz";
+        sha512 = "mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==";
+      };
+    };
+    "wrappy-1.0.2" = {
+      name = "wrappy";
+      packageName = "wrappy";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
+        sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
+      };
+    };
+    "ws-7.4.1" = {
+      name = "ws";
+      packageName = "ws";
+      version = "7.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ws/-/ws-7.4.1.tgz";
+        sha512 = "pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ==";
+      };
+    };
+    "xtend-4.0.2" = {
+      name = "xtend";
+      packageName = "xtend";
+      version = "4.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz";
+        sha512 = "LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==";
+      };
+    };
+    "yallist-3.1.1" = {
+      name = "yallist";
+      packageName = "yallist";
+      version = "3.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz";
+        sha512 = "a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==";
+      };
+    };
+    "yallist-4.0.0" = {
+      name = "yallist";
+      packageName = "yallist";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz";
+        sha512 = "3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==";
+      };
+    };
+  };
+  args = {
+    name = "mx-puppet-discord";
+    packageName = "mx-puppet-discord";
+    version = "0.0.0";
+    src = ./.;
+    dependencies = [
+      sources."@babel/code-frame-7.0.0"
+      sources."@babel/highlight-7.0.0"
+      sources."@dabh/diagnostics-2.0.2"
+      sources."@discordjs/collection-0.1.6"
+      sources."@discordjs/form-data-3.0.1"
+      sources."@sindresorhus/is-3.1.2"
+      (sources."@sorunome/matrix-bot-sdk-0.5.8" // {
+        dependencies = [
+          sources."ansi-styles-4.3.0"
+          sources."chalk-4.1.0"
+          sources."color-convert-2.0.1"
+          sources."color-name-1.1.4"
+          sources."has-flag-4.0.0"
+          sources."mkdirp-1.0.4"
+          sources."supports-color-7.2.0"
+        ];
+      })
+      sources."@szmarczak/http-timer-4.0.5"
+      sources."@types/body-parser-1.19.0"
+      sources."@types/cacheable-request-6.0.1"
+      sources."@types/connect-3.4.34"
+      sources."@types/express-4.17.11"
+      sources."@types/express-serve-static-core-4.17.18"
+      sources."@types/http-cache-semantics-4.0.0"
+      sources."@types/keyv-3.1.1"
+      sources."@types/node-14.6.3"
+      sources."@types/prop-types-15.7.3"
+      sources."@types/qs-6.9.5"
+      sources."@types/range-parser-1.2.3"
+      sources."@types/react-17.0.0"
+      sources."@types/responselike-1.0.0"
+      (sources."@types/serve-static-1.13.9" // {
+        dependencies = [
+          sources."@types/mime-1.3.2"
+        ];
+      })
+      sources."abbrev-1.1.1"
+      sources."abort-controller-3.0.0"
+      sources."accepts-1.3.7"
+      sources."ansi-regex-2.1.1"
+      sources."ansi-styles-3.2.1"
+      sources."aproba-1.2.0"
+      sources."are-we-there-yet-1.1.5"
+      sources."argparse-1.0.10"
+      sources."array-back-3.1.0"
+      sources."array-flatten-1.1.1"
+      sources."assert-options-0.7.0"
+      sources."async-3.2.0"
+      sources."asynckit-0.4.0"
+      sources."balanced-match-1.0.0"
+      sources."base64-js-1.5.1"
+      sources."basic-auth-2.0.1"
+      sources."better-discord.js-git+https://github.com/Sorunome/better-discord.js.git#5e58e1e7510cf2192f3503ca146dd61a56a75c72"
+      sources."better-sqlite3-6.0.1"
+      sources."bindings-1.5.0"
+      sources."bintrees-1.0.1"
+      (sources."bl-4.0.3" // {
+        dependencies = [
+          sources."inherits-2.0.4"
+          sources."readable-stream-3.6.0"
+        ];
+      })
+      sources."blurhash-1.1.3"
+      sources."body-parser-1.19.0"
+      sources."brace-expansion-1.1.11"
+      sources."buffer-5.7.1"
+      sources."buffer-writer-2.0.0"
+      sources."builtin-modules-1.1.1"
+      sources."bytes-3.1.0"
+      sources."cacheable-lookup-5.0.3"
+      sources."cacheable-request-7.0.1"
+      sources."canvas-2.6.1"
+      sources."chalk-2.4.2"
+      sources."chownr-1.1.4"
+      sources."clone-response-1.0.2"
+      sources."code-point-at-1.1.0"
+      sources."color-3.0.0"
+      sources."color-convert-1.9.3"
+      sources."color-name-1.1.3"
+      sources."color-string-1.5.4"
+      sources."colors-1.4.0"
+      sources."colorspace-1.1.2"
+      sources."combined-stream-1.0.8"
+      sources."command-line-args-5.1.1"
+      (sources."command-line-usage-5.0.5" // {
+        dependencies = [
+          sources."array-back-2.0.0"
+          sources."typical-2.6.1"
+        ];
+      })
+      sources."commander-2.20.0"
+      sources."concat-map-0.0.1"
+      sources."console-control-strings-1.1.0"
+      sources."content-disposition-0.5.3"
+      sources."content-type-1.0.4"
+      sources."cookie-0.4.0"
+      sources."cookie-signature-1.0.6"
+      sources."core-util-is-1.0.2"
+      sources."csstype-3.0.5"
+      sources."cycle-1.0.3"
+      sources."debug-2.6.9"
+      (sources."decompress-response-6.0.0" // {
+        dependencies = [
+          sources."mimic-response-3.1.0"
+        ];
+      })
+      sources."deep-extend-0.6.0"
+      sources."defer-to-connect-2.0.0"
+      sources."delayed-stream-1.0.0"
+      sources."delegates-1.0.0"
+      sources."depd-1.1.2"
+      sources."destroy-1.0.4"
+      sources."detect-libc-1.0.3"
+      sources."diff-3.5.0"
+      sources."discord-markdown-git://github.com/Sorunome/discord-markdown.git#0f38420fdd41340d6eadd38cd5b71784ca954085"
+      (sources."dom-serializer-1.2.0" // {
+        dependencies = [
+          sources."domhandler-4.0.0"
+        ];
+      })
+      sources."domelementtype-2.1.0"
+      sources."domhandler-3.3.0"
+      (sources."domutils-2.4.4" // {
+        dependencies = [
+          sources."domhandler-4.0.0"
+        ];
+      })
+      sources."ee-first-1.1.1"
+      sources."enabled-2.0.0"
+      sources."encodeurl-1.0.2"
+      sources."end-of-stream-1.4.4"
+      sources."entities-2.1.0"
+      sources."escape-html-1.0.3"
+      sources."escape-string-regexp-1.0.5"
+      sources."esprima-4.0.1"
+      sources."esutils-2.0.2"
+      sources."etag-1.8.1"
+      sources."event-target-shim-5.0.1"
+      sources."events-3.0.0"
+      sources."expand-template-2.0.3"
+      sources."expire-set-1.0.0"
+      sources."express-4.17.1"
+      sources."extend-shallow-2.0.1"
+      sources."fast-safe-stringify-2.0.7"
+      sources."fecha-4.2.0"
+      sources."file-stream-rotator-0.4.1"
+      sources."file-type-12.4.2"
+      sources."file-uri-to-path-1.0.0"
+      sources."finalhandler-1.1.2"
+      sources."find-replace-3.0.0"
+      sources."fn.name-1.1.0"
+      sources."forwarded-0.1.2"
+      sources."fresh-0.5.2"
+      sources."fs-constants-1.0.0"
+      sources."fs-minipass-1.2.7"
+      sources."fs.realpath-1.0.0"
+      sources."gauge-2.7.4"
+      sources."get-stream-5.2.0"
+      sources."github-from-package-0.0.0"
+      sources."glob-7.1.4"
+      sources."glob-to-regexp-0.4.1"
+      sources."got-11.6.0"
+      sources."graceful-fs-4.2.4"
+      sources."has-flag-3.0.0"
+      sources."has-unicode-2.0.1"
+      sources."hash.js-1.1.7"
+      sources."hasha-5.2.2"
+      sources."he-1.2.0"
+      sources."highlight.js-10.4.1"
+      sources."htmlencode-0.0.4"
+      sources."htmlparser2-4.1.0"
+      sources."http-cache-semantics-4.1.0"
+      sources."http-errors-1.7.2"
+      sources."http2-wrapper-1.0.0-beta.5.2"
+      sources."iconv-lite-0.4.24"
+      sources."ieee754-1.2.1"
+      sources."ignore-walk-3.0.3"
+      sources."inflight-1.0.6"
+      sources."inherits-2.0.3"
+      sources."ini-1.3.8"
+      sources."integer-3.0.1"
+      sources."ipaddr.js-1.9.1"
+      sources."is-arrayish-0.3.2"
+      sources."is-extendable-0.1.1"
+      sources."is-fullwidth-code-point-1.0.0"
+      sources."is-promise-2.2.2"
+      sources."is-stream-2.0.0"
+      sources."isarray-1.0.0"
+      sources."js-tokens-4.0.0"
+      sources."js-yaml-3.13.1"
+      sources."json-buffer-3.0.1"
+      sources."keyv-4.0.1"
+      sources."kuler-2.0.0"
+      sources."linkify-it-2.2.0"
+      sources."lodash-4.17.20"
+      sources."lodash.camelcase-4.3.0"
+      sources."lodash.padend-4.6.1"
+      sources."lodash.toarray-4.4.0"
+      (sources."logform-2.2.0" // {
+        dependencies = [
+          sources."ms-2.1.3"
+        ];
+      })
+      sources."lowdb-1.0.0"
+      sources."lowercase-keys-2.0.0"
+      sources."lru-cache-6.0.0"
+      (sources."markdown-it-9.1.0" // {
+        dependencies = [
+          sources."entities-1.1.2"
+        ];
+      })
+      sources."matrix-discord-parser-0.1.7"
+      sources."mdurl-1.0.1"
+      sources."media-typer-0.3.0"
+      sources."merge-descriptors-1.0.1"
+      sources."methods-1.1.2"
+      sources."mime-2.5.0"
+      sources."mime-db-1.43.0"
+      sources."mime-types-2.1.26"
+      sources."mimic-response-1.0.1"
+      sources."minimalistic-assert-1.0.1"
+      sources."minimatch-3.0.4"
+      sources."minimist-1.2.5"
+      (sources."minipass-2.9.0" // {
+        dependencies = [
+          sources."yallist-3.1.1"
+        ];
+      })
+      sources."minizlib-1.3.3"
+      sources."mkdirp-0.5.5"
+      sources."mkdirp-classic-0.5.3"
+      sources."moment-2.29.1"
+      (sources."morgan-1.10.0" // {
+        dependencies = [
+          sources."depd-2.0.0"
+        ];
+      })
+      sources."ms-2.0.0"
+      (sources."mx-puppet-bridge-0.1.4" // {
+        dependencies = [
+          sources."events-3.2.0"
+        ];
+      })
+      sources."nan-2.14.2"
+      sources."napi-build-utils-1.0.2"
+      (sources."needle-2.6.0" // {
+        dependencies = [
+          sources."debug-3.2.7"
+          sources."ms-2.1.3"
+        ];
+      })
+      sources."negotiator-0.6.2"
+      sources."node-abi-2.19.3"
+      sources."node-emoji-1.10.0"
+      sources."node-fetch-2.6.1"
+      sources."node-html-parser-1.4.9"
+      sources."node-pre-gyp-0.11.0"
+      sources."noop-logger-0.1.1"
+      sources."nopt-4.0.3"
+      sources."normalize-url-4.5.0"
+      sources."normalize-version-1.0.5"
+      sources."npm-bundled-1.1.1"
+      sources."npm-normalize-package-bin-1.0.1"
+      sources."npm-packlist-1.4.8"
+      sources."npmlog-4.1.2"
+      sources."number-is-nan-1.0.1"
+      sources."object-assign-4.1.1"
+      sources."object-hash-1.3.1"
+      sources."on-finished-2.3.0"
+      sources."on-headers-1.0.2"
+      sources."once-1.4.0"
+      sources."one-time-1.0.0"
+      sources."os-homedir-1.0.2"
+      sources."os-tmpdir-1.0.2"
+      sources."osenv-0.1.5"
+      sources."p-cancelable-2.0.0"
+      sources."packet-reader-1.0.0"
+      sources."parse-srcset-1.0.2"
+      sources."parseurl-1.3.3"
+      sources."path-0.12.7"
+      sources."path-is-absolute-1.0.1"
+      sources."path-parse-1.0.6"
+      sources."path-to-regexp-0.1.7"
+      sources."pg-8.5.1"
+      sources."pg-connection-string-2.4.0"
+      sources."pg-int8-1.0.1"
+      sources."pg-minify-1.6.2"
+      sources."pg-pool-3.2.2"
+      sources."pg-promise-10.9.1"
+      sources."pg-protocol-1.4.0"
+      sources."pg-types-2.2.0"
+      sources."pgpass-1.0.4"
+      sources."pify-3.0.0"
+      (sources."postcss-7.0.35" // {
+        dependencies = [
+          sources."supports-color-6.1.0"
+        ];
+      })
+      sources."postgres-array-2.0.0"
+      sources."postgres-bytea-1.0.0"
+      sources."postgres-date-1.0.7"
+      sources."postgres-interval-1.2.0"
+      sources."prebuild-install-5.3.6"
+      sources."prism-media-1.2.3"
+      sources."process-0.11.10"
+      sources."process-nextick-args-2.0.1"
+      sources."prom-client-13.0.0"
+      sources."proxy-addr-2.0.6"
+      sources."pump-3.0.0"
+      sources."qs-6.7.0"
+      sources."quick-lru-5.1.1"
+      sources."range-parser-1.2.1"
+      sources."raw-body-2.4.0"
+      sources."rc-1.2.8"
+      sources."readable-stream-2.3.7"
+      sources."reduce-flatten-1.0.1"
+      sources."resolve-1.11.1"
+      sources."resolve-alpn-1.0.0"
+      sources."responselike-2.0.0"
+      sources."rimraf-2.7.1"
+      sources."safe-buffer-5.1.2"
+      sources."safer-buffer-2.1.2"
+      sources."sanitize-html-1.27.5"
+      sources."sax-1.2.4"
+      sources."semver-5.7.0"
+      sources."semver-closest-0.1.2"
+      (sources."send-0.17.1" // {
+        dependencies = [
+          sources."mime-1.6.0"
+          sources."ms-2.1.1"
+        ];
+      })
+      sources."serve-static-1.14.1"
+      sources."set-blocking-2.0.0"
+      sources."setimmediate-1.0.5"
+      sources."setprototypeof-1.1.1"
+      sources."signal-exit-3.0.3"
+      sources."simple-concat-1.0.1"
+      (sources."simple-get-3.1.0" // {
+        dependencies = [
+          sources."decompress-response-4.2.1"
+          sources."mimic-response-2.1.0"
+        ];
+      })
+      sources."simple-markdown-0.7.2"
+      sources."simple-swizzle-0.2.2"
+      sources."source-map-0.6.1"
+      sources."spex-3.2.0"
+      (sources."split2-3.2.2" // {
+        dependencies = [
+          sources."readable-stream-3.6.0"
+        ];
+      })
+      sources."sprintf-js-1.0.3"
+      sources."stack-trace-0.0.10"
+      sources."statuses-1.5.0"
+      sources."steno-0.4.4"
+      sources."string-width-1.0.2"
+      sources."string_decoder-1.1.1"
+      sources."strip-ansi-3.0.1"
+      sources."strip-json-comments-2.0.1"
+      sources."supports-color-5.5.0"
+      (sources."table-layout-0.4.5" // {
+        dependencies = [
+          sources."array-back-2.0.0"
+          sources."typical-2.6.1"
+        ];
+      })
+      (sources."tar-4.4.10" // {
+        dependencies = [
+          sources."yallist-3.1.1"
+        ];
+      })
+      sources."tar-fs-2.1.1"
+      (sources."tar-stream-2.2.0" // {
+        dependencies = [
+          sources."readable-stream-3.6.0"
+        ];
+      })
+      sources."tdigest-0.1.1"
+      sources."text-hex-1.0.0"
+      sources."toidentifier-1.0.0"
+      sources."triple-beam-1.3.0"
+      sources."tslib-1.10.0"
+      sources."tslint-5.18.0"
+      sources."tsutils-2.29.0"
+      sources."tunnel-agent-0.6.0"
+      sources."tweetnacl-1.0.3"
+      sources."type-fest-0.8.1"
+      sources."type-is-1.6.18"
+      sources."typescript-3.7.4"
+      sources."typical-4.0.0"
+      sources."uc.micro-1.0.6"
+      sources."unescape-1.0.1"
+      sources."unescape-html-1.1.0"
+      sources."unpipe-1.0.0"
+      sources."useragent-generator-1.1.1-amkt-22079-finish.0"
+      sources."util-0.10.4"
+      sources."util-deprecate-1.0.2"
+      sources."utils-merge-1.0.1"
+      sources."uuid-3.4.0"
+      sources."vary-1.1.2"
+      sources."which-pm-runs-1.0.0"
+      sources."wide-align-1.1.3"
+      (sources."winston-3.3.3" // {
+        dependencies = [
+          sources."readable-stream-3.6.0"
+        ];
+      })
+      (sources."winston-compat-0.1.5" // {
+        dependencies = [
+          sources."fecha-2.3.3"
+          sources."logform-1.10.0"
+          sources."ms-2.1.3"
+        ];
+      })
+      (sources."winston-daily-rotate-file-3.10.0" // {
+        dependencies = [
+          sources."semver-6.3.0"
+        ];
+      })
+      sources."winston-transport-4.4.0"
+      (sources."wordwrapjs-3.0.0" // {
+        dependencies = [
+          sources."typical-2.6.1"
+        ];
+      })
+      sources."wrappy-1.0.2"
+      sources."ws-7.4.1"
+      sources."xtend-4.0.2"
+      sources."yallist-4.0.0"
+    ];
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "";
+    };
+    production = true;
+    bypassCache = true;
+    reconstructLock = false;
+  };
+in
+{
+  args = args;
+  sources = sources;
+  tarball = nodeEnv.buildNodeSourceDist args;
+  package = nodeEnv.buildNodePackage args;
+  shell = nodeEnv.buildNodeShell args;
+  nodeDependencies = nodeEnv.buildNodeDependencies (lib.overrideExisting args {
+    src = stdenv.mkDerivation {
+      name = args.name + "-package-json";
+      src = nix-gitignore.gitignoreSourcePure [
+        "*"
+        "!package.json"
+        "!package-lock.json"
+      ] args.src;
+      dontBuild = true;
+      installPhase = "mkdir -p $out; cp -r ./* $out;";
+    };
+  });
+}
diff --git a/pkgs/servers/nosql/cassandra/generic.nix b/pkgs/servers/nosql/cassandra/generic.nix
index ca2001817a3..cab21080a04 100644
--- a/pkgs/servers/nosql/cassandra/generic.nix
+++ b/pkgs/servers/nosql/cassandra/generic.nix
@@ -1,22 +1,34 @@
-{ lib, stdenv, fetchurl, python, makeWrapper, gawk, bash, getopt, procps
-, which, jre, coreutils, nixosTests
-# generation is the attribute version suffix such as 3_11 in pkgs.cassandra_3_11
+{ lib
+, stdenv
+, fetchurl
+, python
+, makeWrapper
+, gawk
+, bash
+, getopt
+, procps
+, which
+, jre
+, coreutils
+, nixosTests
+  # generation is the attribute version suffix such as 3_11 in pkgs.cassandra_3_11
 , generation
-, version, sha256
-, extraMeta ? {}
+, version
+, sha256
+, extraMeta ? { }
 , ...
 }:
 
 let
   libPath = lib.makeLibraryPath [ stdenv.cc.cc ];
-  binPath = with lib; makeBinPath ([
+  binPath = lib.makeBinPath [
     bash
     getopt
     gawk
     which
     jre
     procps
-  ]);
+  ];
 in
 
 stdenv.mkDerivation rec {
@@ -90,13 +102,14 @@ stdenv.mkDerivation rec {
     wrapProgram $out/bin/cqlsh --prefix PATH : ${python}/bin
 
     runHook postInstall
-    '';
+  '';
 
   passthru = {
     tests =
       let
         test = nixosTests."cassandra_${generation}";
-      in {
+      in
+      {
         nixos =
           assert test.testPackage.version == version;
           test;
diff --git a/pkgs/shells/bash/undistract-me/default.nix b/pkgs/shells/bash/undistract-me/default.nix
new file mode 100644
index 00000000000..e6641d9039c
--- /dev/null
+++ b/pkgs/shells/bash/undistract-me/default.nix
@@ -0,0 +1,79 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, fetchpatch
+, coreutils
+, gnused
+, libnotify
+, pulseaudio
+, sound-theme-freedesktop
+, xprop
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "undistract-me";
+  version = "unstable-2020-08-09";
+
+  src = fetchFromGitHub {
+    owner = "jml";
+    repo = pname;
+    rev = "2f8ac25c6ad8efcf160d2b480825b1cbb6772aab";
+    hash = "sha256-Qw7Cu9q0ZgK/RTvyDdHM5N3eBaKjtYqYH0J+hKMUZX8=";
+  };
+
+  patches = [
+    # Don't block the terminal when notification sound is played
+    #
+    # See https://github.com/jml/undistract-me/pull/69
+    (fetchpatch {
+      url = "https://github.com/jml/undistract-me/commit/2356ebbe8bf2bcb4b95af1ae2bcdc786ce7cc6e8.patch";
+      sha256 = "sha256-Ij3OXTOnIQsYhKVmqjChhN1q4ASZ7waOkfQTTp5XfPo=";
+    })
+
+    # Fix showing notifications when using Wayland apps with XWayland
+    # running, or connection to X server fails.
+    #
+    # NOTE: Without a real X server, notifications will not be
+    # suppressed when the window running the command is focused.
+    #
+    # See https://github.com/jml/undistract-me/pull/71
+    (fetchpatch {
+      url = "https://github.com/jml/undistract-me/commit/3f4ceaf5a4eba8e3cb02236c48247f87e3d1124f.patch";
+      sha256 = "sha256-9AK9Jp3TXJ75Y+jwZXlwQ6j54FW1rOBddoktrm0VX68=";
+    })
+  ];
+
+  # Patch in dependencies. Can't use makeWrapper because the bash
+  # functions will be sourced and invoked in a different environment
+  # for each command invocation.
+  postPatch = ''
+    for script in *.bash *.sh; do
+      substituteInPlace "$script" \
+        --replace /usr/share/undistract-me "$out/share/undistract-me" \
+        --replace basename ${coreutils}/bin/basename \
+        --replace 'cut ' '${coreutils}/bin/cut ' \
+        --replace date ${coreutils}/bin/date \
+        --replace dirname ${coreutils}/bin/dirname \
+        --replace sed ${gnused}/bin/sed \
+        --replace notify-send ${libnotify}/bin/notify-send \
+        --replace paplay ${pulseaudio}/bin/paplay \
+        --replace /usr/share/sounds/freedesktop ${sound-theme-freedesktop}/share/sounds/freedesktop \
+        --replace xprop ${xprop}/bin/xprop
+    done
+  '';
+
+  installPhase = ''
+    mkdir -p "$out/share/undistract-me" "$out/etc/profile.d" "$out/share/licenses/undistract-me"
+    cp long-running.bash "$out/share/undistract-me"
+    cp preexec.bash "$out/share/undistract-me"
+    cp undistract-me.sh "$out/etc/profile.d"
+    cp LICENSE "$out/share/licenses/undistract-me"
+  '';
+
+  meta = with lib; {
+    description = "Notifies you when long-running terminal commands complete";
+    homepage = "https://github.com/jml/undistract-me";
+    license = licenses.mit;
+    maintainers = with maintainers; [ metadark ];
+  };
+}
diff --git a/pkgs/tools/admin/lego/default.nix b/pkgs/tools/admin/lego/default.nix
index a825908484c..4553242d663 100644
--- a/pkgs/tools/admin/lego/default.nix
+++ b/pkgs/tools/admin/lego/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "lego";
-  version = "4.2.0";
+  version = "4.3.1";
 
   src = fetchFromGitHub {
     owner = "go-acme";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-S9I6b9+FngX0/W5t3EHG+H1ULsZKoQw1/S4HnSITYG0=";
+    sha256 = "0mmr7fcqgbmr0b1fc49p6wjn7axxayyj420fxhhdvkd4nv8fxh1q";
   };
 
-  vendorSha256 = "sha256-dVGSMPhAvN/kWgv3XHS+lOZdcbDNL44ELkv7fHAJWlI=";
+  vendorSha256 = "04d141kjzqcjiwv6sd0sbrgsr7a99dvblm19gwzczljkfgi60q8w";
 
   doCheck = false;
 
diff --git a/pkgs/tools/admin/rset/default.nix b/pkgs/tools/admin/rset/default.nix
new file mode 100644
index 00000000000..f7c00fffb1c
--- /dev/null
+++ b/pkgs/tools/admin/rset/default.nix
@@ -0,0 +1,48 @@
+{ lib, stdenv, fetchurl, coreutils, openssh, gnutar }:
+
+stdenv.mkDerivation rec {
+  pname = "rset";
+  version = "2.1";
+
+  src = fetchurl {
+    url = "https://scriptedconfiguration.org/code/${pname}-${version}.tar.gz";
+    sha256 = "0916f96afl8kcn2hpj4qhg92g2j93ycp2sb94nsz3q44sqc6ddhb";
+  };
+
+  patches = [ ./paths.patch ];
+
+  postPatch = ''
+    substituteInPlace rset.c \
+      --replace @ssh@       ${openssh}/bin/ssh \
+      --replace @miniquark@ $out/bin/miniquark \
+      --replace @rinstall@  $out/bin/rinstall \
+      --replace @rsub@      $out/bin/rsub
+
+    substituteInPlace execute.c \
+      --replace @ssh@     ${openssh}/bin/ssh \
+      --replace @ssh-add@ ${openssh}/bin/ssh-add \
+      --replace @tar@     ${gnutar}/bin/tar
+
+    substituteInPlace rutils.c \
+      --replace @install@ ${coreutils}/bin/install
+  '';
+
+  # these are to be run on the remote host,
+  # so we want to preserve the original shebang.
+  postFixup = ''
+    sed -i "1s@.*@#!/bin/sh@" $out/bin/rinstall
+    sed -i "1s@.*@#!/bin/sh@" $out/bin/rsub
+  '';
+
+  dontAddPrefix = true;
+  installFlags = [ "PREFIX=$(out)" ];
+
+  meta = with lib; {
+    homepage = "https://scriptedconfiguration.org/";
+    description = "Configure systems using any scripting language";
+    changelog = "https://github.com/eradman/rset/raw/${version}/NEWS";
+    license = licenses.isc;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ cstrahan ];
+  };
+}
diff --git a/pkgs/tools/admin/rset/paths.patch b/pkgs/tools/admin/rset/paths.patch
new file mode 100644
index 00000000000..af09b0902ed
--- /dev/null
+++ b/pkgs/tools/admin/rset/paths.patch
@@ -0,0 +1,131 @@
+diff --git a/execute.c b/execute.c
+index be06068..3468fa7 100644
+--- a/execute.c
++++ b/execute.c
+@@ -242,7 +242,7 @@ verify_ssh_agent() {
+ 	char *output;
+ 	char *argv[32];
+ 
+-	append(argv, 0, "ssh-add", "-l", NULL);
++	append(argv, 0, "@ssh-add@", "-l", NULL);
+ 	output = cmd_pipe_stdout(argv, &error_code, &output_size);
+ 	free(output);
+ 
+@@ -282,7 +282,7 @@ start_connection(char *socket_path, Label *route_label, int http_port, const cha
+ 	}
+ 
+ 	argc = 0;
+-	argc = append(argv, argc, "ssh", "-fN", "-R", port_forwarding, "-S",
++	argc = append(argv, argc, "@ssh@", "-fN", "-R", port_forwarding, "-S",
+ 		socket_path, "-M", NULL);
+ 	if (ssh_config)
+ 		(void) append(argv, argc, "-F", ssh_config, host_name, NULL);
+@@ -292,12 +292,12 @@ start_connection(char *socket_path, Label *route_label, int http_port, const cha
+ 		return -1;
+ 
+ 	snprintf(tmp_path, sizeof(tmp_path), "mkdir " REMOTE_TMP_PATH, http_port);
+-	append(argv, 0, "ssh", "-S", socket_path, host_name, tmp_path, NULL);
++	append(argv, 0, "@ssh@", "-S", socket_path, host_name, tmp_path, NULL);
+ 	if (run(argv) != 0)
+ 		return -1;
+ 
+-	snprintf(cmd, PATH_MAX, "tar -cf - %s -C " REPLICATED_DIRECTORY " ./ | "
+-	   "exec ssh -q -S %s %s tar -xf - -C " REMOTE_TMP_PATH,
++	snprintf(cmd, PATH_MAX, "@tar@ -cf - %s -C " REPLICATED_DIRECTORY " ./ | "
++	   "exec @ssh@ -q -S %s %s tar -xf - -C " REMOTE_TMP_PATH,
+ 	    array_to_str(route_label->export_paths), socket_path, host_name,
+ 	    http_port);
+ 	if (system(cmd) != 0) {
+@@ -326,7 +326,7 @@ ssh_command_pipe(char *host_name, char *socket_path, Label *host_label, int http
+ 
+ 	/* construct ssh command */
+ 	argc = 0;
+-	argc = append(argv, argc, "ssh", "-T", "-S", socket_path, NULL);
++	argc = append(argv, argc, "@ssh@", "-T", "-S", socket_path, NULL);
+ 
+ 	(void) append(argv, argc, host_name, cmd, NULL);
+ 	return cmd_pipe_stdin(argv, host_label->content, host_label->content_size);
+@@ -344,7 +344,7 @@ ssh_command_tty(char *host_name, char *socket_path, Label *host_label, int http_
+ 	    http_port);
+ 	/* construct ssh command */
+ 	argc = 0;
+-	argc = append(argv, argc, "ssh", "-T", "-S", socket_path, NULL);
++	argc = append(argv, argc, "@ssh@", "-T", "-S", socket_path, NULL);
+ 	(void) append(argv, argc, host_name, cmd, NULL);
+ 	cmd_pipe_stdin(argv, host_label->content, host_label->content_size);
+ 
+@@ -360,7 +360,7 @@ ssh_command_tty(char *host_name, char *socket_path, Label *host_label, int http_
+ 
+ 	/* construct ssh command */
+ 	argc = 0;
+-	argc = append(argv, argc, "ssh", "-t", "-S", socket_path, NULL);
++	argc = append(argv, argc, "@ssh@", "-t", "-S", socket_path, NULL);
+ 
+ 	(void) append(argv, argc, host_name, cmd, NULL);
+ 	return run(argv);
+@@ -375,11 +375,11 @@ end_connection(char *socket_path, char *host_name, int http_port) {
+ 		return;
+ 
+ 	snprintf(tmp_path, sizeof(tmp_path), REMOTE_TMP_PATH, http_port);
+-	append(argv, 0, "ssh", "-S", socket_path, host_name, "rm", "-rf", tmp_path , NULL);
++	append(argv, 0, "@ssh@", "-S", socket_path, host_name, "rm", "-rf", tmp_path , NULL);
+ 	if (run(argv) != 0)
+ 		warn("remote tmp dir");
+ 
+-	append(argv, 0, "ssh", "-q", "-S", socket_path, "-O", "exit", host_name, NULL);
++	append(argv, 0, "@ssh@", "-q", "-S", socket_path, "-O", "exit", host_name, NULL);
+ 	if (run(argv) != 0)
+ 		warn("exec ssh -O exit");
+ }
+diff --git a/rset.c b/rset.c
+index 383fc82..9c20f65 100644
+--- a/rset.c
++++ b/rset.c
+@@ -128,10 +128,8 @@ int main(int argc, char *argv[])
+ 		hostnames[i] = argv[optind+i];
+ 	hostnames[i] = NULL;
+ 
+-	if ((rinstall_bin = findprog("rinstall")) == 0)
+-		not_found("rinstall");
+-	if ((rsub_bin = findprog("rsub")) == 0)
+-		not_found("rsub");
++  rinstall_bin = "@rinstall@";
++  rsub_bin = "@rsub@";
+ 
+ 	/* all operations must be relative to the routes file */
+ 	if (realpath(xdirname(routes_file), routes_realpath) == NULL)
+@@ -159,10 +157,9 @@ int main(int argc, char *argv[])
+ 
+ 	/* Convert http server command line into a vector */
+ 	inputstring = malloc(PATH_MAX);
+-	snprintf(inputstring, PATH_MAX, "miniquark -p %d -d " PUBLIC_DIRECTORY, http_port);
++	snprintf(inputstring, PATH_MAX, "@miniquark@ -p %d -d " PUBLIC_DIRECTORY, http_port);
+ 	str_to_array(http_srv_argv, inputstring, sizeof(http_srv_argv));
+-	if ((httpd_bin = findprog(http_srv_argv[0])) == 0)
+-		not_found(http_srv_argv[0]);
++	httpd_bin = "@miniquark@";
+ 
+ 	/* start the web server */
+ 	pipe(stdout_pipe);
+@@ -397,7 +394,7 @@ handle_exit(int sig) {
+ 		printf("caught signal %d, terminating connection to '%s'\n", sig,
+ 			hostname);
+ 		/* clean up socket and SSH connection; leaving staging dir */
+-		execlp("ssh", "ssh", "-S", socket_path, "-O", "exit", hostname, NULL);
++		execlp("@ssh@", "@ssh@", "-S", socket_path, "-O", "exit", hostname, NULL);
+ 		err(1, "ssh -O exit");
+ 	}
+ }
+diff --git a/rutils.c b/rutils.c
+index 1e182d8..9aef76d 100644
+--- a/rutils.c
++++ b/rutils.c
+@@ -77,7 +77,7 @@ install_if_new(const char *src, const char *dst) {
+ 
+ 	pid = fork();
+ 	if (pid == 0) {
+-		if (execl("/usr/bin/install", "/usr/bin/install", src, dst, NULL) != -1)
++		if (execl("@install@", "@install@", src, dst, NULL) != -1)
+ 			err(1, "%s", dst);
+ 	}
+ 	waitpid(pid, &status, 0);
diff --git a/pkgs/tools/graphics/agi/default.nix b/pkgs/tools/graphics/agi/default.nix
index 5fb1881eff9..4cab99d69fa 100644
--- a/pkgs/tools/graphics/agi/default.nix
+++ b/pkgs/tools/graphics/agi/default.nix
@@ -14,11 +14,11 @@
 
 stdenv.mkDerivation rec {
   pname = "agi";
-  version = "1.1.0-dev-20210423";
+  version = "1.1.0-dev-20210430";
 
   src = fetchzip {
     url = "https://github.com/google/agi-dev-releases/releases/download/v${version}/agi-${version}-linux.zip";
-    sha256 = "sha256-49ZKqG+CiQkdoBMLdYrN5fMnJH5TtXdUknQLQB2UG04=";
+    sha256 = "sha256-Sb2N3GPS+A55O39/kqua7M18O1F76zz6sNFghSFRBmk=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/tools/graphics/pngquant/default.nix b/pkgs/tools/graphics/pngquant/default.nix
index b3b1773faf1..7463e2a45e0 100644
--- a/pkgs/tools/graphics/pngquant/default.nix
+++ b/pkgs/tools/graphics/pngquant/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "pngquant";
-  version = "2.12.5";
+  version = "2.14.1";
 
   src = fetchFromGitHub {
-    owner = "pornel";
+    owner = "kornelski";
     repo = "pngquant";
     rev = version;
-    sha256 = "0sq398iv5cacblz6pb4j2hn16cnszsbkahikdpfq84rb9bj0ya40";
+    sha256 = "054hi33qp3jc7hv0141wi8drwdg24v5zfp8znwjmz4mcdls8vxbb";
     fetchSubmodules = true;
   };
 
@@ -17,11 +17,14 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ pkg-config ];
   buildInputs = [ libpng zlib lcms2 ];
 
+  doCheck = true;
+
   meta = with lib; {
     homepage = "https://pngquant.org/";
     description = "A tool to convert 24/32-bit RGBA PNGs to 8-bit palette with alpha channel preserved";
+    changelog = "https://github.com/kornelski/pngquant/raw/${version}/CHANGELOG";
     platforms = platforms.unix;
-    license = licenses.gpl3;
+    license = with licenses; [ gpl3Plus hpnd bsd2 ];
     maintainers = [ maintainers.volth ];
   };
 }
diff --git a/pkgs/tools/graphics/quirc/default.nix b/pkgs/tools/graphics/quirc/default.nix
index 8ca8ecf2c89..dec2a1020c8 100644
--- a/pkgs/tools/graphics/quirc/default.nix
+++ b/pkgs/tools/graphics/quirc/default.nix
@@ -1,36 +1,40 @@
-{lib, stdenv, fetchgit, SDL_gfx, SDL, libjpeg, libpng, pkg-config}:
-let
-  s =
-  rec {
-    date = "2016-08-16";
-    version = "git-${date}";
-    baseName = "quirc";
-    name = "${baseName}-${version}";
-    url = "https://github.com/dlbeer/quirc";
-    rev = "5b262480091d5f84a67a4a56c728fc8b39844339";
-    sha256 = "1w5qvjafn14s6jjs7kiwsqirlsqbgv0p152hrsq463pm34hp0lzy";
-  };
-in
+{ lib, stdenv, fetchFromGitHub
+, SDL_gfx, SDL, libjpeg, libpng, pkg-config
+}:
+
 stdenv.mkDerivation {
-  inherit (s) name version;
-  nativeBuildInputs = [ pkg-config ];
-  buildInputs = [
-    SDL SDL_gfx libjpeg libpng
-  ];
-  src = fetchgit {
-    inherit (s) url sha256 rev;
+  pname = "quirc";
+  version = "2020-04-16";
+
+  src = fetchFromGitHub {
+    owner = "dlbeer";
+    repo = "quirc";
+    rev = "ed455904f35270888bc902b9e8c0c9b3184a8302";
+    sha256 = "1kqqvcnxcaxdgls9sibw5pqjz3g1gys2v64i4kfqp8wfcgd9771q";
   };
-  NIX_CFLAGS_COMPILE="-I${SDL.dev}/include/SDL -I${SDL_gfx}/include/SDL";
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ SDL SDL_gfx libjpeg libpng ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+  NIX_CFLAGS_COMPILE = "-I${SDL.dev}/include/SDL -I${SDL_gfx}/include/SDL";
+
   configurePhase = ''
+    runHook preConfigure
+
+    # don't try to change ownership
     sed -e 's/-[og] root//g' -i Makefile
+
+    runHook postConfigure
   '';
   preInstall = ''
     mkdir -p "$out"/{bin,lib,include}
-    find . -maxdepth 1 -type f -perm -0100 -exec cp '{}' "$out"/bin ';'
+
+    # install all binaries
+    find -maxdepth 1 -type f -executable ! -name '*.so.*' | xargs cp -t "$out"/bin
   '';
-  makeFlags = [ "PREFIX=$(out)" ];
+
   meta = {
-    inherit (s) version;
     description = "A small QR code decoding library";
     license = lib.licenses.isc;
     maintainers = [lib.maintainers.raskin];
diff --git a/pkgs/tools/graphics/xcolor/default.nix b/pkgs/tools/graphics/xcolor/default.nix
new file mode 100644
index 00000000000..f19a80357f3
--- /dev/null
+++ b/pkgs/tools/graphics/xcolor/default.nix
@@ -0,0 +1,26 @@
+{ lib, rustPlatform, fetchFromGitHub, pkg-config, libX11, libXcursor, libxcb, python3 }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "xcolor";
+  version = "unstable-2021-02-02";
+
+  src = fetchFromGitHub {
+    owner = "Soft";
+    repo = pname;
+    rev = "0e99e67cd37000bf563aa1e89faae796ec25f163";
+    sha256 = "sha256-rHqK05dN5lrvDNbRCWGghI7KJwWzNCuRDEThEeMzmio=";
+  };
+
+  cargoSha256 = "sha256-lHOT/P1Sh1b53EkPIQM3l9Tozdqh60qlUDdjthj32jM=";
+
+  nativeBuildInputs = [ pkg-config python3 ];
+
+  buildInputs = [ libX11 libXcursor libxcb ];
+
+  meta = with lib; {
+    description = "Lightweight color picker for X11";
+    homepage = "https://github.com/Soft/xcolor";
+    maintainers = with lib.maintainers; [ fortuneteller2k ];
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/tools/misc/handlr/default.nix b/pkgs/tools/misc/handlr/default.nix
index baa718c1b1f..c8143ea330a 100644
--- a/pkgs/tools/misc/handlr/default.nix
+++ b/pkgs/tools/misc/handlr/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "handlr";
-  version = "0.6.3";
+  version = "0.6.4";
 
   src = fetchFromGitHub {
     owner = "chmln";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-OtU6sL2Bbbec0gHxk3bl5Inn+ZmNYiHgpSF0gjDuRSg=";
+    sha256 = "sha256-UYcJtBwbUDqDiRoj5PmO+urURfd7S7fSx2XhQRBrKTE=";
   };
 
-  cargoSha256 = "sha256-bX7QWV1R+pLxvghpaV10LeROv4wBVfZhHyrPCIgqETA=";
+  cargoSha256 = "sha256-xDQV8wVlzItz0lzR1nVRPVsg7nSf/khUhevDlGgSO3g=";
 
   nativeBuildInputs = [ shared-mime-info ];
 
diff --git a/pkgs/tools/misc/krapslog/default.nix b/pkgs/tools/misc/krapslog/default.nix
index 4574d6c3534..ba6f92cc0fc 100644
--- a/pkgs/tools/misc/krapslog/default.nix
+++ b/pkgs/tools/misc/krapslog/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "krapslog";
-  version = "0.1.2";
+  version = "0.1.3";
 
   src = fetchFromGitHub {
     owner = "acj";
     repo = "krapslog-rs";
     rev = version;
-    sha256 = "1yllvy3z3115aqxhnjn9rq2z67rgf2w53naygnl6ixpjhpafcr3k";
+    sha256 = "sha256-BaR72djkvaMmdBqbykezLkY81Y7iajhNPcFGYq/qv7Y=";
   };
 
-  cargoSha256 = "05gvl6yiyibcdscdf9a6k28xizdr5kfqbhynfbjny2hpqqjmnxzl";
+  cargoSha256 = "sha256-rcLsqMegCos+v0OkdRvH9xoopE7R/njEUVteMY/6mj8=";
 
   meta = with lib; {
     description = "Visualize a log file with sparklines";
diff --git a/pkgs/tools/misc/librespeed-cli/default.nix b/pkgs/tools/misc/librespeed-cli/default.nix
index d2396f0086c..b1ab29d8acb 100644
--- a/pkgs/tools/misc/librespeed-cli/default.nix
+++ b/pkgs/tools/misc/librespeed-cli/default.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "librespeed-cli";
-  version = "1.0.7";
+  version = "1.0.8";
 
   src = fetchFromGitHub {
     owner = "librespeed";
     repo = "speedtest-cli";
     rev = "v${version}";
-    sha256 = "03bhxx33fy1cgp83anm51fm8v079v0az0d0p785dz98jg14vzibl";
+    sha256 = "sha256-cbLuAOAGWmYj6xR2AjpwvRXrP3SXfHhjUp5MVLqC0WE=";
   };
 
-  vendorSha256 = "1kccxmmzbkzbrxypcrz0j1zz51c0q1d5hh25lcpfbkm3498mj02c";
+  vendorSha256 = "sha256-psZyyySpY06J+ji+9uHUtX7Ks1hzZC3zINszYP75NfQ=";
 
   # Tests have additonal requirements
   doCheck = false;
diff --git a/pkgs/tools/misc/neofetch/default.nix b/pkgs/tools/misc/neofetch/default.nix
index d9287003084..68cebca4bc3 100644
--- a/pkgs/tools/misc/neofetch/default.nix
+++ b/pkgs/tools/misc/neofetch/default.nix
@@ -34,5 +34,6 @@ stdenvNoCC.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.all;
     maintainers = with maintainers; [ alibabzo konimex ];
+    mainProgram = "neofetch";
   };
 }
diff --git a/pkgs/tools/misc/piston-cli/default.nix b/pkgs/tools/misc/piston-cli/default.nix
index 73e3ca8d689..97506c709df 100644
--- a/pkgs/tools/misc/piston-cli/default.nix
+++ b/pkgs/tools/misc/piston-cli/default.nix
@@ -2,11 +2,11 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "piston-cli";
-  version = "1.2.2";
+  version = "1.3.0";
 
   src = python3Packages.fetchPypi {
     inherit pname version;
-    sha256 = "hhOistr5lHF6rIuMpudKwSuBQhaQDzTdelAOCjyVQZk=";
+    sha256 = "XzKXHZHYZRT3t4ZonM+Ngx1jIT1nmz4k34VSw29GFoM=";
   };
 
   propagatedBuildInputs = with python3Packages; [ rich prompt_toolkit requests pygments ];
diff --git a/pkgs/tools/misc/rename/default.nix b/pkgs/tools/misc/rename/default.nix
index a9f42d1139e..a8b5f4a54ac 100644
--- a/pkgs/tools/misc/rename/default.nix
+++ b/pkgs/tools/misc/rename/default.nix
@@ -1,19 +1,19 @@
 { lib, fetchFromGitHub, perlPackages }:
 
-perlPackages.buildPerlPackage {
+perlPackages.buildPerlPackage rec {
   pname = "rename";
-  version = "1.9";
+  version = "1.11";
   outputs = [ "out" ];
   src = fetchFromGitHub {
     owner = "pstray";
     repo = "rename";
-    rev = "d46f1d0ced25dc5849acb5d5974a3e2e9d97d536";
-    sha256 = "0qahs1cqfaci2hdf1xncrz4k0z5skkfr43apnm3kybs7za33apzw";
+    rev = "v${version}";
+    sha256 = "SK6wS3IxjCftuDiiZU27TFnn9GVd137zmzvGH88cNLI=";
   };
   meta = with lib; {
     description = "Rename files according to a Perl rewrite expression";
     homepage = "https://github.com/pstray/rename";
-    maintainers = with maintainers; [ mkg ];
+    maintainers = with maintainers; [ mkg cyplo ];
     license = with licenses; [ gpl1Plus ];
   };
 }
diff --git a/pkgs/tools/misc/starship/default.nix b/pkgs/tools/misc/starship/default.nix
index 1e3eae78701..40913193163 100644
--- a/pkgs/tools/misc/starship/default.nix
+++ b/pkgs/tools/misc/starship/default.nix
@@ -11,13 +11,13 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "starship";
-  version = "0.52.1";
+  version = "0.53.0";
 
   src = fetchFromGitHub {
     owner = "starship";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-BX+NUF7mgZyrloj3h9YcG2r6ZZWO20hXQYbBvaK34JQ=";
+    sha256 = "sha256-g4w14fktJB8TItgm3nSgG+lpdXdNTpX52J+FsIbU+YY=";
   };
 
   nativeBuildInputs = [ installShellFiles ] ++ lib.optionals stdenv.isLinux [ pkg-config ];
@@ -32,7 +32,7 @@ rustPlatform.buildRustPackage rec {
     done
   '';
 
-  cargoSha256 = "sha256-8xqbPkdIVfAkeG1WZFq56N0rcF+uh2FeMKzz4FgMFYs=";
+  cargoSha256 = "sha256-9wpr1gs9EehmFzCW2kKDx+LKoDUC27fmhjpcH/fIcyY=";
 
   preCheck = ''
     HOME=$TMPDIR
diff --git a/pkgs/tools/misc/ytfzf/default.nix b/pkgs/tools/misc/ytfzf/default.nix
index ba1658f3d1d..8c93d02c359 100644
--- a/pkgs/tools/misc/ytfzf/default.nix
+++ b/pkgs/tools/misc/ytfzf/default.nix
@@ -16,13 +16,13 @@
 
 stdenv.mkDerivation rec {
   pname = "ytfzf";
-  version = "1.1.4";
+  version = "1.1.5";
 
   src = fetchFromGitHub {
     owner = "pystardust";
     repo = "ytfzf";
     rev = "v${version}";
-    sha256 = "sha256-zRzd+rZxT5IJoFJl9sutTdQC4eMDUCBld5bTGfQWtco=";
+    sha256 = "sha256-NkJjh/Ys0Ypm8NTy/ZrQ4hIAjP5VGrpU73wjAMsZnAc=";
   };
 
   patches = [
diff --git a/pkgs/tools/misc/zoxide/default.nix b/pkgs/tools/misc/zoxide/default.nix
index a454a73384b..30b9c496900 100644
--- a/pkgs/tools/misc/zoxide/default.nix
+++ b/pkgs/tools/misc/zoxide/default.nix
@@ -4,20 +4,23 @@
 , rustPlatform
 , withFzf ? true
 , fzf
+, installShellFiles
 , libiconv
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "zoxide";
-  version = "0.6.0";
+  version = "0.7.0";
 
   src = fetchFromGitHub {
     owner = "ajeetdsouza";
     repo = "zoxide";
     rev = "v${version}";
-    sha256 = "ZeGFsVBpEhKi4EIhpQlCuriFzmHAgLYw3qE/zqfyqgU=";
+    sha256 = "sha256-yunKyCjJ/vWUcsodweLmxv0+QJQI2i5u5VIzp2U+VyU=";
   };
 
+  nativeBuildInputs = [ installShellFiles ];
+
   buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];
 
   postPatch = lib.optionalString withFzf ''
@@ -25,11 +28,16 @@ rustPlatform.buildRustPackage rec {
       --replace '"fzf"' '"${fzf}/bin/fzf"'
   '';
 
-  cargoSha256 = "Hzn01+OhdBrZD1woXN4Pwf/S72Deln1gyyBOWyDC6iM=";
+  cargoSha256 = "sha256-eoal6z4wX1pNdAJfdamJgOSFCvGWdbVlq1X+vD9lraE=";
+
+  postInstall = ''
+    installManPage man/*
+  '';
 
   meta = with lib; {
     description = "A fast cd command that learns your habits";
     homepage = "https://github.com/ajeetdsouza/zoxide";
+    changelog = "https://github.com/ajeetdsouza/zoxide/raw/v${version}/CHANGELOG.md";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ ysndr cole-h SuperSandro2000 ];
   };
diff --git a/pkgs/tools/networking/babeld/default.nix b/pkgs/tools/networking/babeld/default.nix
index 5c7b26ced05..47894c1a532 100644
--- a/pkgs/tools/networking/babeld/default.nix
+++ b/pkgs/tools/networking/babeld/default.nix
@@ -1,33 +1,25 @@
-{ lib, stdenv, fetchurl, fetchpatch, nixosTests }:
+{ lib, stdenv, fetchurl, nixosTests }:
 
 stdenv.mkDerivation rec {
   pname = "babeld";
-  version = "1.9.2";
+  version = "1.10";
 
   src = fetchurl {
-    url = "http://www.pps.univ-paris-diderot.fr/~jch/software/files/${pname}-${version}.tar.gz";
-    sha256 = "01vzhrspnm4sy9ggaz9n3bfl5hy3qlynr218j3mdcddzm3h00kqm";
+    url = "https://www.irif.fr/~jch/software/files/${pname}-${version}.tar.gz";
+    sha256 = "1sld5bbig2pkcr4zrdpvfzifc6a3lc8i8kdzk5ryjh166844mxd5";
   };
 
-  patches = [
-    (fetchpatch {
-      # Skip kernel_setup_interface when `skip-kernel-setup` is enabled.
-      url = "https://github.com/jech/babeld/commit/f9698a5616842467ad08a5f9ed3d6fcfa2dd2898.patch";
-      sha256 = "00kj2jxsfq0pjk5wrkslyvkww57makxlwa4fd82g7g9hrgahpqwr";
-    })
-  ];
-
   preBuild = ''
     makeFlags="PREFIX=$out ETCDIR=$out/etc"
   '';
 
   passthru.tests.babeld = nixosTests.babeld;
 
-  meta = {
-    homepage = "http://www.pps.univ-paris-diderot.fr/~jch/software/babel/";
+  meta = with lib; {
+    homepage = "http://www.irif.fr/~jch/software/babel/";
     description = "Loop-avoiding distance-vector routing protocol";
-    license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ fpletz ];
-    platforms = with lib.platforms; linux;
+    license = licenses.mit;
+    maintainers = with maintainers; [ fpletz hexa ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/grpcurl/default.nix b/pkgs/tools/networking/grpcurl/default.nix
index 3f9d31b508b..ec181c17e9e 100644
--- a/pkgs/tools/networking/grpcurl/default.nix
+++ b/pkgs/tools/networking/grpcurl/default.nix
@@ -2,18 +2,18 @@
 
 buildGoModule rec {
   pname = "grpcurl";
-  version = "1.8.0";
+  version = "1.8.1";
 
   src = fetchFromGitHub {
     owner = "fullstorydev";
     repo = "grpcurl";
     rev = "v${version}";
-    sha256 = "sha256-ZrL23eqA56BApwUtBwL5nSAd2LZbQxthyiFBnkJ5+Zg=";
+    sha256 = "sha256-BxmoIGhuAt/uhHLNdMiSrNVWAoxAAMKPJ/NsXjf2ynk=";
   };
 
   subPackages = [ "cmd/grpcurl" ];
 
-  vendorSha256 = "sha256-Tx00zRlzxCgyYdcYjzCxnFe8HyiitaKLcXJjYWhYSic=";
+  vendorSha256 = "sha256-EnstvJk2kZ1Ft5xY1dO14wnmT//2K72OnDMZqeaOeQI=";
 
   buildFlagsArray = [ "-ldflags=-s -w -X main.version=${version}" ];
 
diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix
index 7eda5ae6f35..ac61a64180d 100644
--- a/pkgs/tools/package-management/nix/default.nix
+++ b/pkgs/tools/package-management/nix/default.nix
@@ -215,13 +215,13 @@ in rec {
   nixUnstable = lib.lowPrio (callPackage common rec {
     pname = "nix";
     version = "2.4${suffix}";
-    suffix = "pre20210326_dd77f71";
+    suffix = "pre20210503_6d2553a";
 
     src = fetchFromGitHub {
       owner = "NixOS";
       repo = "nix";
-      rev = "dd77f71afe6733e9790dd001125c423cb648b7ce";
-      sha256 = "rVHzrsCtdiWjyLuHnDplG2mx+7dw5VyzZ9ReXxuCvHY=";
+      rev = "6d2553ae1496288554e871c530836428f405fd67";
+      sha256 = "sha256-YeSeyOKhBAXHlkzo4mwYr8QIjIP9AgdpJ7YdhqOO2CA=";
     };
 
     inherit storeDir stateDir confDir boehmgc;
diff --git a/pkgs/tools/security/clevis/default.nix b/pkgs/tools/security/clevis/default.nix
index e5415f6d09b..753fd8a6395 100644
--- a/pkgs/tools/security/clevis/default.nix
+++ b/pkgs/tools/security/clevis/default.nix
@@ -1,5 +1,6 @@
 { lib, stdenv, fetchFromGitHub, meson, ninja, pkg-config, asciidoc
-, jansson, jose, cryptsetup, curl, libpwquality, luksmeta
+, makeWrapper, jansson, jose, cryptsetup, curl, libpwquality, luksmeta
+, coreutils, tpm2-tools
 }:
 
 stdenv.mkDerivation rec {
@@ -13,8 +14,21 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-m1UhyjD5ydSgCTBu6sECLlxFx0rnQxFnBA7frbdUqU8=";
   };
 
-  nativeBuildInputs = [ meson ninja pkg-config asciidoc ];
-  buildInputs = [ jansson jose cryptsetup curl libpwquality luksmeta ];
+  postPatch = ''
+    for f in $(find src/ -type f); do
+      grep -q "/bin/cat" "$f" && substituteInPlace "$f" \
+        --replace '/bin/cat' '${coreutils}/bin/cat' || true
+    done
+  '';
+
+  postInstall = ''
+    # We wrap the main clevis binary entrypoint but not the sub-binaries.
+    wrapProgram $out/bin/clevis \
+      --prefix PATH ':' "${tpm2-tools}/bin:${jose}/bin:${placeholder "out"}/bin"
+  '';
+
+  nativeBuildInputs = [ meson ninja pkg-config asciidoc makeWrapper ];
+  buildInputs = [ jansson jose cryptsetup curl libpwquality luksmeta tpm2-tools ];
 
   outputs = [ "out" "man" ];
 
diff --git a/pkgs/tools/security/gopass/default.nix b/pkgs/tools/security/gopass/default.nix
index be9fe521e9d..dea65ca7164 100644
--- a/pkgs/tools/security/gopass/default.nix
+++ b/pkgs/tools/security/gopass/default.nix
@@ -13,7 +13,7 @@
 
 buildGoModule rec {
   pname = "gopass";
-  version = "1.12.5";
+  version = "1.12.6";
 
   nativeBuildInputs = [ installShellFiles makeWrapper ];
 
@@ -21,10 +21,10 @@ buildGoModule rec {
     owner = "gopasspw";
     repo = pname;
     rev = "v${version}";
-    sha256 = "06qc68q9px2g19iz23nbc4ay5dwqhgh99d1jj5l2dhb3mgknh19n";
+    sha256 = "17y9indpgqqx261bqvckfqq1q2zciahssaalaa5c5hb6bnw5ls52";
   };
 
-  vendorSha256 = "1jir1lb60p86fmk5sh92ywchqva59c31g1badlq9pjgd7jip5vnl";
+  vendorSha256 = "106rn0bkvzf2fw21f6wpiya88ysj8sfc2zkkm47iqr23d2202i4b";
 
   subPackages = [ "." ];
 
@@ -41,19 +41,18 @@ buildGoModule rec {
   );
 
   postInstall = ''
-    HOME=$TMPDIR
-    for shell in bash fish zsh; do
-      $out/bin/gopass completion $shell > gopass.$shell
-      installShellCompletion gopass.$shell
-    done
-    go run helpers/man/main.go > gopass.1
     installManPage gopass.1
+    installShellCompletion --zsh --name _gopass zsh.completion
+    installShellCompletion --bash --name gopass.bash bash.completion
+    installShellCompletion --fish --name gopass.fish fish.completion
   '' + lib.optionalString passAlias ''
     ln -s $out/bin/gopass $out/bin/pass
   '';
 
   postFixup = ''
-    wrapProgram $out/bin/gopass --prefix PATH : "${wrapperPath}"
+    wrapProgram $out/bin/gopass \
+      --prefix PATH : "${wrapperPath}" \
+      --set GOPASS_NO_REMINDER true
   '';
 
   meta = with lib; {
diff --git a/pkgs/tools/security/rage/default.nix b/pkgs/tools/security/rage/default.nix
index d248fb19a27..99e61dc2358 100644
--- a/pkgs/tools/security/rage/default.nix
+++ b/pkgs/tools/security/rage/default.nix
@@ -1,24 +1,25 @@
 { lib, stdenv, rustPlatform, fetchFromGitHub, installShellFiles
-, Foundation, Security }:
+, Foundation, Security, libiconv }:
 
 rustPlatform.buildRustPackage rec {
   pname = "rage";
-  version = "0.5.1";
+  version = "0.6.0";
 
   src = fetchFromGitHub {
     owner = "str4d";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-oYCARqG5YwKO0b73aEMLr/xzXl6xBEMCvE1HMCtMq20=";
+    sha256 = "1vag448zpjyplcjpf1ir81l8ip3yxm9vkrxffqr78zslb4k6hw2w";
   };
 
-  cargoSha256 = "sha256-vadXIdqfmol4thHIwpkQCn7HsXdxo0l+6CBm3QIJmeA=";
+  cargoSha256 = "06jfhq9vnkq5g5bw1zl2sxsih63yajcyk9zaizhzkdsbhydr4955";
 
   nativeBuildInputs = [ installShellFiles ];
 
   buildInputs = lib.optionals stdenv.isDarwin [
     Foundation
     Security
+    libiconv
   ];
 
   # cargo test has an x86-only dependency
@@ -37,7 +38,7 @@ rustPlatform.buildRustPackage rec {
   meta = with lib; {
     description = "A simple, secure and modern encryption tool with small explicit keys, no config options, and UNIX-style composability";
     homepage = "https://github.com/str4d/rage";
-    changelog = "https://github.com/str4d/rage/releases/tag/v${version}";
+    changelog = "https://github.com/str4d/rage/raw/v${version}/rage/CHANGELOG.md";
     license = with licenses; [ asl20 mit ]; # either at your option
     maintainers = with maintainers; [ marsam ryantm ];
   };
diff --git a/pkgs/tools/text/link-grammar/default.nix b/pkgs/tools/text/link-grammar/default.nix
index b5cfdcbfc0c..3a6686dba5f 100644
--- a/pkgs/tools/text/link-grammar/default.nix
+++ b/pkgs/tools/text/link-grammar/default.nix
@@ -1,20 +1,36 @@
-{ lib, stdenv, fetchurl, pkg-config, python3, sqlite, libedit, zlib, runCommand, dieHook }:
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, python3
+, sqlite
+, libedit
+, runCommand
+, dieHook
+}:
 
 let
 
 link-grammar = stdenv.mkDerivation rec {
-  version = "5.8.1";
   pname = "link-grammar";
+  version = "5.9.1";
 
   outputs = [ "bin" "out" "dev" "man" ];
 
   src = fetchurl {
     url = "http://www.abisource.com/downloads/${pname}/${version}/${pname}-${version}.tar.gz";
-    sha256 = "sha256-EcT/VR+lFpJX2sxXUIDGOwdceQ7awpmEqUZBoJk7UFs=";
+    sha256 = "sha256-4D/rqoIGlvR+q7Az8E1xPYSQQMJMRVeRM9HQIbjssLo=";
   };
 
-  nativeBuildInputs = [ pkg-config python3 ];
-  buildInputs = [ sqlite libedit zlib ];
+  nativeBuildInputs = [
+    pkg-config
+    python3
+  ];
+
+  buildInputs = [
+    sqlite
+    libedit
+  ];
 
   configureFlags = [
     "--disable-java-bindings"
diff --git a/pkgs/tools/text/ripgrep/default.nix b/pkgs/tools/text/ripgrep/default.nix
index 6417fb0f93b..61c24ae39e4 100644
--- a/pkgs/tools/text/ripgrep/default.nix
+++ b/pkgs/tools/text/ripgrep/default.nix
@@ -6,7 +6,7 @@
 , pkg-config
 , Security
 , withPCRE2 ? true
-, pcre2 ? null
+, pcre2
 }:
 
 rustPlatform.buildRustPackage rec {
@@ -26,8 +26,8 @@ rustPlatform.buildRustPackage rec {
 
   nativeBuildInputs = [ asciidoctor installShellFiles ]
     ++ lib.optional withPCRE2 pkg-config;
-  buildInputs = (lib.optional withPCRE2 pcre2)
-    ++ (lib.optional stdenv.isDarwin Security);
+  buildInputs = lib.optional withPCRE2 pcre2
+    ++ lib.optional stdenv.isDarwin Security;
 
   preFixup = ''
     installManPage $releaseDir/build/ripgrep-*/out/rg.1
diff --git a/pkgs/tools/typesetting/tex/texlive/bin.nix b/pkgs/tools/typesetting/tex/texlive/bin.nix
index fb9b748b5d0..1c3d5929636 100644
--- a/pkgs/tools/typesetting/tex/texlive/bin.nix
+++ b/pkgs/tools/typesetting/tex/texlive/bin.nix
@@ -3,7 +3,7 @@
 , zlib, libiconv, libpng, libX11
 , freetype, gd, libXaw, icu, ghostscript, libXpm, libXmu, libXext
 , perl, perlPackages, python3Packages, pkg-config
-, poppler, libpaper, graphite2, zziplib, harfbuzz, potrace, gmp, mpfr
+, libpaper, graphite2, zziplib, harfbuzz, potrace, gmp, mpfr
 , brotli, cairo, pixman, xorg, clisp, biber, woff2, xxHash
 , makeWrapper, shortenPerlShebang
 }:
@@ -14,24 +14,22 @@
 let
   withSystemLibs = map (libname: "--with-system-${libname}");
 
-  year = "2020";
+  year = "2021";
   version = year; # keep names simple for now
 
   common = {
     src = fetchurl {
       urls = [
-        "http://ftp.math.utah.edu/pub/tex/historic/systems/texlive/${year}/texlive-${year}0406-source.tar.xz"
-              "ftp://tug.ctan.org/pub/tex/historic/systems/texlive/${year}/texlive-${year}0406-source.tar.xz"
+        "http://ftp.math.utah.edu/pub/tex/historic/systems/texlive/${year}/texlive-${year}0325-source.tar.xz"
+              "ftp://tug.ctan.org/pub/tex/historic/systems/texlive/${year}/texlive-${year}0325-source.tar.xz"
       ];
-      sha256 = "0y4h4j2qg714srhvf1hvn165w7sanr1j2vzrsgc23kxvrc43sbz3";
+      sha256 = "0jsq1p66l46k2qq0gbqmx25flj2nprsz4wrd1ybn286p11kdkvvs";
     };
 
     prePatch = ''
       for i in texk/kpathsea/mktex*; do
         sed -i '/^mydir=/d' "$i"
       done
-      cp -pv texk/web2c/pdftexdir/pdftoepdf{-poppler0.86.0,}.cc
-      cp -pv texk/web2c/pdftexdir/pdftosrc{-poppler0.83.0,}.cc
     '';
 
     configureFlags = [
@@ -43,9 +41,8 @@ let
     ]
       ++ withSystemLibs [
       # see "from TL tree" vs. "Using installed"  in configure output
-      "zziplib" "xpdf" "poppler" "mpfr" "gmp"
+      "zziplib" "mpfr" "gmp"
       "pixman" "potrace" "gd" "freetype2" "libpng" "libpaper" "zlib"
-        # beware: xpdf means to use stuff from poppler :-/
     ];
 
     # clean broken links to stuff not built
@@ -73,7 +70,7 @@ core = stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ pkg-config ];
   buildInputs = [
-    /*teckit*/ zziplib poppler mpfr gmp
+    /*teckit*/ zziplib mpfr gmp
     pixman gd freetype libpng libpaper zlib
     perl
   ];
@@ -82,7 +79,7 @@ core = stdenv.mkDerivation rec {
 
   preConfigure = ''
     rm -r libs/{cairo,freetype2,gd,gmp,graphite2,harfbuzz,icu,libpaper,libpng} \
-      libs/{lua53,luajit,mpfr,pixman,poppler,xpdf,zlib,zziplib}
+      libs/{lua53,luajit,mpfr,pixman,zlib,zziplib}
     mkdir WorkDir
     cd WorkDir
   '';
@@ -178,7 +175,7 @@ core-big = stdenv.mkDerivation { #TODO: upmendex
     luajit = lib.optionalString withLuaJIT ",luajit";
   in ''
     mkdir ./WorkDir && cd ./WorkDir
-    for path in libs/{teckit,lua53${luajit}} texk/web2c; do
+    for path in libs/{pplib,teckit,lua53${luajit}} texk/web2c; do
       (
         if [[ "$path" =~ "libs/lua" ]]; then
           extraConfig="--enable-static --disable-shared"
@@ -247,18 +244,17 @@ chktex = stdenv.mkDerivation {
 
 dvisvgm = stdenv.mkDerivation rec {
   pname = "texlive-dvisvgm.bin";
-  version = "2.11";
-  # TODO: dvisvgm was switched to build from upstream sources
-  # to address https://github.com/NixOS/nixpkgs/issues/104847
-  # We might want to consider reverting that change in the future.
-
-  src = fetchurl {
-    url = "https://github.com/mgieseki/dvisvgm/releases/download/${version}/dvisvgm-${version}.tar.gz";
-    sha256 = "12b6h0h8rc487yjh3sq9zsdabm9cs2vqcrb0znnfi8277f87zf3j";
-  };
+  inherit version;
+
+  inherit (common) src;
+
+  preConfigure = "cd texk/dvisvgm";
+
+  configureFlags = common.configureFlags
+    ++ [ "--with-system-kpathsea" ];
 
   nativeBuildInputs = [ pkg-config ];
-  buildInputs = [ core/*kpathsea*/ brotli ghostscript zlib freetype woff2 potrace xxHash ];
+  buildInputs = [ core brotli ghostscript zlib freetype woff2 potrace xxHash ];
 
   enableParallelBuilding = true;
 };
diff --git a/pkgs/tools/typesetting/tex/texlive/default.nix b/pkgs/tools/typesetting/tex/texlive/default.nix
index 52521a80809..4ba42cbce57 100644
--- a/pkgs/tools/typesetting/tex/texlive/default.nix
+++ b/pkgs/tools/typesetting/tex/texlive/default.nix
@@ -3,7 +3,7 @@
   - current html: https://nixos.org/nixpkgs/manual/#sec-language-texlive
 */
 { stdenv, lib, fetchurl, runCommand, writeText, buildEnv
-, callPackage, ghostscriptX, harfbuzz, poppler_min
+, callPackage, ghostscriptX, harfbuzz
 , makeWrapper, python3, ruby, perl
 , useFixedHashes ? true
 , recurseIntoAttrs
@@ -11,7 +11,6 @@
 let
   # various binaries (compiled)
   bin = callPackage ./bin.nix {
-    poppler = poppler_min; # otherwise depend on various X stuff
     ghostscript = ghostscriptX;
     harfbuzz = harfbuzz.override {
       withIcu = true; withGraphite2 = true;
diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix
index ae9ead3eb66..887b1a0caaf 100644
--- a/pkgs/top-level/aliases.nix
+++ b/pkgs/top-level/aliases.nix
@@ -70,6 +70,7 @@ mapAliases ({
   bazaarTools = throw "bazaar has been deprecated by breezy."; # added 2020-04-19
   beegfs = throw "beegfs has been removed."; # added 2019-11-24
   bluezFull = bluez; # Added 2019-12-03
+  bpftool = bpftools; # Added 2021-05-03
   brackets = throw "brackets has been removed, it was unmaintained and had open vulnerabilities"; # added 2021-01-24
   bridge_utils = bridge-utils;  # added 2015-02-20
   bro = zeek; # added 2019-09-29
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index b485168c6ec..04effbffbd3 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -251,6 +251,8 @@ in
 
   eclipse-mat = callPackage ../development/tools/eclipse-mat { };
 
+  frugal = callPackage ../development/tools/frugal { };
+
   glade = callPackage ../development/tools/glade { };
 
   hobbes = callPackage ../development/tools/hobbes { };
@@ -1083,6 +1085,8 @@ in
 
   audiowaveform = callPackage ../tools/audio/audiowaveform { };
 
+  authenticator = callPackage ../applications/misc/authenticator { };
+
   autoflake = callPackage ../development/tools/analysis/autoflake { };
 
   autospotting = callPackage ../applications/misc/autospotting { };
@@ -1228,6 +1232,10 @@ in
 
   btrfs-heatmap = callPackage ../tools/filesystems/btrfs-heatmap { };
 
+  bucklespring = bucklespring-x11;
+  bucklespring-libinput = callPackage ../applications/audio/bucklespring { };
+  bucklespring-x11 = callPackage ../applications/audio/bucklespring { legacy = true; };
+
   buildbot = with python3Packages; toPythonApplication buildbot;
   buildbot-ui = with python3Packages; toPythonApplication buildbot-ui;
   buildbot-full = with python3Packages; toPythonApplication buildbot-full;
@@ -2826,6 +2834,8 @@ in
 
   mididings = callPackage ../tools/audio/mididings { };
 
+  miniscript = callPackage ../applications/blockchains/miniscript { };
+
   miniserve = callPackage ../tools/misc/miniserve {
     inherit (darwin.apple_sdk.frameworks) Security;
   };
@@ -6101,6 +6111,8 @@ in
     inherit (darwin.apple_sdk.frameworks) Security;
   };
 
+  matrix-dendrite = callPackage ../servers/matrix-dendrite { };
+
   /* Python 3.8 is currently broken with matrix-synapse since `python38Packages.bleach` fails
     (https://github.com/NixOS/nixpkgs/issues/76093) */
   matrix-synapse = callPackage ../servers/matrix-synapse { /*python3 = python38;*/ };
@@ -6184,6 +6196,8 @@ in
 
   multitail = callPackage ../tools/misc/multitail { };
 
+  mx-puppet-discord = callPackage ../servers/mx-puppet-discord { };
+
   mxt-app = callPackage ../misc/mxt-app { };
 
   naabu = callPackage ../tools/security/naabu { };
@@ -8105,6 +8119,8 @@ in
 
   rrdtool = callPackage ../tools/misc/rrdtool { };
 
+  rset = callPackage ../tools/admin/rset { };
+
   rshijack = callPackage ../tools/networking/rshijack { };
 
   rsibreak = libsForQt5.callPackage ../applications/misc/rsibreak { };
@@ -8229,16 +8245,10 @@ in
 
   screen-message = callPackage ../tools/X11/screen-message { };
 
-  screencloud = callPackage ../applications/graphics/screencloud {
-    quazip = quazip_qt4;
-  };
+  screencloud = libsForQt5.callPackage ../applications/graphics/screencloud { };
 
   screenkey = callPackage ../applications/video/screenkey { };
 
-  quazip_qt4 = libsForQt5.quazip.override {
-    qtbase = qt4;
-  };
-
   scfbuild = python3.pkgs.callPackage ../tools/misc/scfbuild { };
 
   scriptaculous = callPackage ../development/libraries/scriptaculous { };
@@ -9924,6 +9934,8 @@ in
 
   nix-bash-completions = callPackage ../shells/bash/nix-bash-completions { };
 
+  undistract-me = callPackage ../shells/bash/undistract-me { };
+
   dash = callPackage ../shells/dash { };
 
   dasht = callPackage ../tools/misc/dasht { };
@@ -11438,6 +11450,7 @@ in
   cargo-release = callPackage ../tools/package-management/cargo-release {
     inherit (darwin.apple_sdk.frameworks) Security;
   };
+  cargo-rr = callPackage ../development/tools/rust/cargo-rr { };
   cargo-tarpaulin = callPackage ../development/tools/analysis/cargo-tarpaulin { };
   cargo-update = callPackage ../tools/package-management/cargo-update {
     inherit (darwin.apple_sdk.frameworks) Security;
@@ -11478,6 +11491,7 @@ in
   cargo-make = callPackage ../development/tools/rust/cargo-make {
     inherit (darwin.apple_sdk.frameworks) Security SystemConfiguration;
   };
+  cargo-msrv = callPackage ../development/tools/rust/cargo-msrv { };
   cargo-play = callPackage ../development/tools/rust/cargo-play { };
   cargo-raze = callPackage ../development/tools/rust/cargo-raze {
     inherit (darwin.apple_sdk.frameworks) Security;
@@ -12560,7 +12574,7 @@ in
 
   libbpf = callPackage ../os-specific/linux/libbpf { };
 
-  bpftool = callPackage ../os-specific/linux/bpftool { };
+  bpftools = callPackage ../os-specific/linux/bpftools { };
 
   bpm-tools = callPackage ../tools/audio/bpm-tools { };
 
@@ -14041,6 +14055,8 @@ in
 
   cimg = callPackage  ../development/libraries/cimg { };
 
+  cjose = callPackage ../development/libraries/cjose { };
+
   scmccid = callPackage ../development/libraries/scmccid { };
 
   ccrtp = callPackage ../development/libraries/ccrtp { };
@@ -14084,6 +14100,8 @@ in
 
   cl = callPackage ../development/libraries/cl { };
 
+  clanlib = callPackage ../development/libraries/clanlib { };
+
   classads = callPackage ../development/libraries/classads { };
 
   clearsilver = callPackage ../development/libraries/clearsilver { };
@@ -15301,6 +15319,8 @@ in
 
   libacr38u = callPackage ../tools/security/libacr38u { };
 
+  libadwaita = callPackage ../development/libraries/libadwaita { };
+
   libaec = callPackage ../development/libraries/libaec { };
 
   libagar = callPackage ../development/libraries/libagar { };
@@ -19408,6 +19428,8 @@ in
 
   thanos = callPackage ../servers/monitoring/thanos { };
 
+  trafficserver = callPackage ../servers/http/trafficserver { };
+
   inherit (callPackages ../servers/http/tomcat { })
     tomcat7
     tomcat8
@@ -23574,7 +23596,7 @@ in
 
   googleearth = callPackage ../applications/misc/googleearth { };
 
-  googleearth-pro = callPackage ../applications/misc/googleearth-pro { };
+  googleearth-pro = libsForQt5.callPackage ../applications/misc/googleearth-pro { };
 
   google-chrome = callPackage ../applications/networking/browsers/google-chrome { gconf = gnome2.GConf; };
 
@@ -23918,7 +23940,7 @@ in
 
   id3v2 = callPackage ../applications/audio/id3v2 { };
 
-  ideamaker = callPackage ../applications/misc/ideamaker { };
+  ideamaker = libsForQt5.callPackage ../applications/misc/ideamaker { };
 
   ifenslave = callPackage ../os-specific/linux/ifenslave { };
 
@@ -24725,6 +24747,7 @@ in
     mopidy-mpd
     mopidy-mpris
     mopidy-musicbox-webclient
+    mopidy-podcast
     mopidy-scrobbler
     mopidy-somafm
     mopidy-soundcloud
@@ -26628,7 +26651,7 @@ in
 
   gnvim = callPackage ../applications/editors/neovim/gnvim/wrapper.nix { };
 
-  neovim-remote = callPackage ../applications/editors/neovim/neovim-remote.nix { pythonPackages = python3Packages; };
+  neovim-remote = callPackage ../applications/editors/neovim/neovim-remote.nix { };
 
   vis = callPackage ../applications/editors/vis {
     inherit (lua52Packages) lpeg;
@@ -26746,6 +26769,8 @@ in
   };
 
   vscode = callPackage ../applications/editors/vscode/vscode.nix { };
+  vscode-fhs = vscode.fhs;
+  vscode-fhsWithPackages = vscode.fhsWithPackages;
 
   vscode-with-extensions = callPackage ../applications/editors/vscode/with-extensions.nix {};
 
@@ -26754,6 +26779,8 @@ in
   vscode-extensions = recurseIntoAttrs (callPackage ../misc/vscode-extensions {});
 
   vscodium = callPackage ../applications/editors/vscode/vscodium.nix { };
+  vscodium-fhs = vscodium.fhs;
+  vscodium-fhsWithPackages = vscodium.fhsWithPackages;
 
   code-server = callPackage ../servers/code-server {
     inherit (darwin.apple_sdk.frameworks) AppKit Cocoa Security;
@@ -27991,6 +28018,8 @@ in
 
   megaglest = callPackage ../games/megaglest {};
 
+  methane = callPackage ../games/methane { };
+
   mindustry = callPackage ../games/mindustry { };
   mindustry-wayland = callPackage ../games/mindustry { glew = glew-egl; };
 
@@ -31254,5 +31283,7 @@ in
 
   lc3tools = callPackage ../development/tools/lc3tools {};
 
+  xcolor = callPackage ../tools/graphics/xcolor { };
+
   zktree = callPackage ../applications/misc/zktree {};
 }
diff --git a/pkgs/top-level/coq-packages.nix b/pkgs/top-level/coq-packages.nix
index e533d5aace1..2cd2965fc61 100644
--- a/pkgs/top-level/coq-packages.nix
+++ b/pkgs/top-level/coq-packages.nix
@@ -122,9 +122,7 @@ in rec {
   coqPackages_8_11 = mkCoqPackages coq_8_11;
   coqPackages_8_12 = mkCoqPackages coq_8_12;
   coqPackages_8_13 = mkCoqPackages coq_8_13;
-  coqPackages = recurseIntoAttrs (lib.mapDerivationAttrset lib.dontDistribute
-    coqPackages_8_11
-  );
+  coqPackages = recurseIntoAttrs coqPackages_8_11;
   coq = coqPackages.coq;
 
 }
diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix
index 6ae5f43a63c..71da1aa5c0a 100644
--- a/pkgs/top-level/ocaml-packages.nix
+++ b/pkgs/top-level/ocaml-packages.nix
@@ -1076,6 +1076,8 @@ let
 
     ppx_deriving_yojson = callPackage ../development/ocaml-modules/ppx_deriving_yojson {};
 
+    ppx_deriving_cmdliner = callPackage ../development/ocaml-modules/ppx_deriving_cmdliner {};
+
     ppx_gen_rec = callPackage ../development/ocaml-modules/ppx_gen_rec {};
 
     ppx_import = callPackage ../development/ocaml-modules/ppx_import (
diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix
index 9db246eae43..9dc9444e096 100644
--- a/pkgs/top-level/perl-packages.nix
+++ b/pkgs/top-level/perl-packages.nix
@@ -10673,6 +10673,16 @@ let
       sha256 = "0skm22b3gg1bfk0amklrprpva41m6mkrhqp0gi7z1nmcf9ypjh61";
     };
 
+    patches = [
+      # Unfortunately, not every release is uploaded to CPAN so security fixes
+      # would need to be cherry-picked from releases
+      (fetchpatch {
+        name = "CVE-2021-22204.patch";
+        url = "https://salsa.debian.org/perl-team/modules/packages/libimage-exiftool-perl/-/raw/0347501fda93cb8366d6451aedcf258b34fb4a2b/debian/patches/CVE-2021-22204.patch";
+        sha256 = "1fxw32zcssillnv764wsd05lyswn8bbrc90q5cy9aknx0ncgsrxj";
+      })
+    ];
+
     nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
     postInstall = lib.optionalString stdenv.isDarwin ''
       shortenPerlShebang $out/bin/exiftool
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index cc390b22213..330f93703e8 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -615,6 +615,8 @@ in {
 
   autograd = callPackage ../development/python-modules/autograd { };
 
+  autoit-ripper = callPackage ../development/python-modules/autoit-ripper { };
+
   autologging = callPackage ../development/python-modules/autologging { };
 
   automat = callPackage ../development/python-modules/automat { };
@@ -3563,6 +3565,8 @@ in {
 
   karton-asciimagic = callPackage ../development/python-modules/karton-asciimagic { };
 
+  karton-autoit-ripper = callPackage ../development/python-modules/karton-autoit-ripper { };
+
   karton-classifier = callPackage ../development/python-modules/karton-classifier { };
 
   karton-config-extractor = callPackage ../development/python-modules/karton-config-extractor { };
@@ -5073,7 +5077,7 @@ in {
   poolsense = callPackage ../development/python-modules/poolsense { };
 
   poppler-qt5 = callPackage ../development/python-modules/poppler-qt5 {
-    inherit (pkgs.qt5) qtbase;
+    inherit (pkgs.qt5) qtbase qmake;
     inherit (pkgs.libsForQt5) poppler;
   };