~aasg/nixexprs

2d3f389c7c723a3e20602a344a953016ef403bc3 — Aluísio Augusto Silva Gonçalves 5 months ago cc2263a
matrix-appservice-irc: init at 0.22.0
M pkgs/manifest.nix => pkgs/manifest.nix +1 -0
@@ 10,6 10,7 @@
  [ "iwgtk" ]
  [ "linuxPackages" "rtl8723bu" ]
  [ "linuxPackages_latest" "rtl8723bu" ]
  [ "matrix-appservice-irc" ]
  [ "python3Packages" "daemonocle" ]
  [ "shellharden" ]
  [ "trust-dns" ]

M pkgs/overlay.nix => pkgs/overlay.nix +4 -0
@@ 25,6 25,10 @@ final: prev:
  linuxPackagesFor = kernel:
    (prev.linuxPackagesFor kernel).extend (import ./os-specific/linux/kernel-packages.nix);

  matrix-appservice-irc = final.callPackage ./servers/matrix-synapse/matrix-appservice-irc {
    nodejs = final.nodejs-12_x;
  };

  python3 = prev.python3.override { packageOverrides = import ./development/python-modules; self = final.python3; };

  shellharden = final.callPackage ./development/tools/shellharden { };

A pkgs/servers/matrix-synapse/matrix-appservice-irc/default.nix => pkgs/servers/matrix-synapse/matrix-appservice-irc/default.nix +32 -0
@@ 0,0 1,32 @@
{ stdenv, lib, pkgs, makeWrapper, nodejs, nodePackages, ... }:
let
  inherit (lib) attrValues findSingle;

  ourNodePackages = import ./node-composition.nix {
    inherit pkgs nodejs;
    inherit (stdenv.hostPlatform) system;
  };

  nodePackage = findSingle
    (drv: drv ? packageName && drv.packageName == "matrix-appservice-irc")
    (throw "no 'matrix-appservice-irc' package found in nodePackages")
    (throw "multiple 'matrix-appservice-irc' packages found in nodePackages")
    (attrValues ourNodePackages);
in
nodePackage.override {
  nativeBuildInputs = [ makeWrapper ];
  buildInputs = [ nodePackages.node-gyp-build ];

  postInstall = ''
    makeWrapper '${nodejs}/bin/node' "$out/bin/matrix-appservice-irc" \
      --add-flags "$out/lib/node_modules/matrix-appservice-irc/app.js"
  '';

  meta = with lib; {
    description = "Node.js IRC bridge for Matrix";
    homepage = "https://github.com/matrix-org/matrix-appservice-irc";
    license = licenses.asl20;
    maintainers = with maintainers; [ AluisioASG ];
    platforms = platforms.all;
  };
}

A pkgs/servers/matrix-synapse/matrix-appservice-irc/generate-dependencies.sh => pkgs/servers/matrix-synapse/matrix-appservice-irc/generate-dependencies.sh +9 -0
@@ 0,0 1,9 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p nodePackages.node2nix

node2nix \
  --nodejs-12 \
  --input package.json \
  --node-env node-env.nix \
  --output node-packages.nix \
  --composition node-composition.nix

A pkgs/servers/matrix-synapse/matrix-appservice-irc/node-composition.nix => pkgs/servers/matrix-synapse/matrix-appservice-irc/node-composition.nix +17 -0
@@ 0,0 1,17 @@
# This file has been generated by node2nix 1.8.0. Do not edit!

{pkgs ? import <nixpkgs> {
    inherit system;
  }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-12_x"}:

let
  nodeEnv = import ./node-env.nix {
    inherit (pkgs) stdenv python2 utillinux runCommand writeTextFile;
    inherit nodejs;
    libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
  };
in
import ./node-packages.nix {
  inherit (pkgs) fetchurl fetchgit;
  inherit nodeEnv;
}
\ No newline at end of file

A pkgs/servers/matrix-synapse/matrix-appservice-irc/node-env.nix => pkgs/servers/matrix-synapse/matrix-appservice-irc/node-env.nix +542 -0
@@ 0,0 1,542 @@
# This file originates from node2nix

{stdenv, nodejs, python2, utillinux, libtool, runCommand, writeTextFile}:

let
  python = if nodejs ? python then nodejs.python else python2;

  # Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise
  tarWrapper = runCommand "tarWrapper" {} ''
    mkdir -p $out/bin

    cat > $out/bin/tar <<EOF
    #! ${stdenv.shell} -e
    $(type -p tar) "\$@" --warning=no-unknown-keyword --delay-directory-restore
    EOF

    chmod +x $out/bin/tar
  '';

  # Function that generates a TGZ file from a NPM project
  buildNodeSourceDist =
    { name, version, src, ... }:

    stdenv.mkDerivation {
      name = "node-tarball-${name}-${version}";
      inherit src;
      buildInputs = [ nodejs ];
      buildPhase = ''
        export HOME=$TMPDIR
        tgzFile=$(npm pack | tail -n 1) # Hooks to the pack command will add output (https://docs.npmjs.com/misc/scripts)
      '';
      installPhase = ''
        mkdir -p $out/tarballs
        mv $tgzFile $out/tarballs
        mkdir -p $out/nix-support
        echo "file source-dist $out/tarballs/$tgzFile" >> $out/nix-support/hydra-build-products
      '';
    };

  includeDependencies = {dependencies}:
    stdenv.lib.optionalString (dependencies != [])
      (stdenv.lib.concatMapStrings (dependency:
        ''
          # Bundle the dependencies of the package
          mkdir -p node_modules
          cd node_modules

          # Only include dependencies if they don't exist. They may also be bundled in the package.
          if [ ! -e "${dependency.name}" ]
          then
              ${composePackage dependency}
          fi

          cd ..
        ''
      ) dependencies);

  # Recursively composes the dependencies of a package
  composePackage = { name, packageName, src, dependencies ? [], ... }@args:
    builtins.addErrorContext "while evaluating node package '${packageName}'" ''
      DIR=$(pwd)
      cd $TMPDIR

      unpackFile ${src}

      # Make the base dir in which the target dependency resides first
      mkdir -p "$(dirname "$DIR/${packageName}")"

      if [ -f "${src}" ]
      then
          # Figure out what directory has been unpacked
          packageDir="$(find . -maxdepth 1 -type d | tail -1)"

          # Restore write permissions to make building work
          find "$packageDir" -type d -exec chmod u+x {} \;
          chmod -R u+w "$packageDir"

          # Move the extracted tarball into the output folder
          mv "$packageDir" "$DIR/${packageName}"
      elif [ -d "${src}" ]
      then
          # Get a stripped name (without hash) of the source directory.
          # On old nixpkgs it's already set internally.
          if [ -z "$strippedName" ]
          then
              strippedName="$(stripHash ${src})"
          fi

          # Restore write permissions to make building work
          chmod -R u+w "$strippedName"

          # Move the extracted directory into the output folder
          mv "$strippedName" "$DIR/${packageName}"
      fi

      # Unset the stripped name to not confuse the next unpack step
      unset strippedName

      # Include the dependencies of the package
      cd "$DIR/${packageName}"
      ${includeDependencies { inherit dependencies; }}
      cd ..
      ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
    '';

  pinpointDependencies = {dependencies, production}:
    let
      pinpointDependenciesFromPackageJSON = writeTextFile {
        name = "pinpointDependencies.js";
        text = ''
          var fs = require('fs');
          var path = require('path');

          function resolveDependencyVersion(location, name) {
              if(location == process.env['NIX_STORE']) {
                  return null;
              } else {
                  var dependencyPackageJSON = path.join(location, "node_modules", name, "package.json");

                  if(fs.existsSync(dependencyPackageJSON)) {
                      var dependencyPackageObj = JSON.parse(fs.readFileSync(dependencyPackageJSON));

                      if(dependencyPackageObj.name == name) {
                          return dependencyPackageObj.version;
                      }
                  } else {
                      return resolveDependencyVersion(path.resolve(location, ".."), name);
                  }
              }
          }

          function replaceDependencies(dependencies) {
              if(typeof dependencies == "object" && dependencies !== null) {
                  for(var dependency in dependencies) {
                      var resolvedVersion = resolveDependencyVersion(process.cwd(), dependency);

                      if(resolvedVersion === null) {
                          process.stderr.write("WARNING: cannot pinpoint dependency: "+dependency+", context: "+process.cwd()+"\n");
                      } else {
                          dependencies[dependency] = resolvedVersion;
                      }
                  }
              }
          }

          /* Read the package.json configuration */
          var packageObj = JSON.parse(fs.readFileSync('./package.json'));

          /* Pinpoint all dependencies */
          replaceDependencies(packageObj.dependencies);
          if(process.argv[2] == "development") {
              replaceDependencies(packageObj.devDependencies);
          }
          replaceDependencies(packageObj.optionalDependencies);

          /* Write the fixed package.json file */
          fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2));
        '';
      };
    in
    ''
      node ${pinpointDependenciesFromPackageJSON} ${if production then "production" else "development"}

      ${stdenv.lib.optionalString (dependencies != [])
        ''
          if [ -d node_modules ]
          then
              cd node_modules
              ${stdenv.lib.concatMapStrings (dependency: pinpointDependenciesOfPackage dependency) dependencies}
              cd ..
          fi
        ''}
    '';

  # Recursively traverses all dependencies of a package and pinpoints all
  # dependencies in the package.json file to the versions that are actually
  # being used.

  pinpointDependenciesOfPackage = { packageName, dependencies ? [], production ? true, ... }@args:
    ''
      if [ -d "${packageName}" ]
      then
          cd "${packageName}"
          ${pinpointDependencies { inherit dependencies production; }}
          cd ..
          ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
      fi
    '';

  # Extract the Node.js source code which is used to compile packages with
  # native bindings
  nodeSources = runCommand "node-sources" {} ''
    tar --no-same-owner --no-same-permissions -xf ${nodejs.src}
    mv node-* $out
  '';

  # Script that adds _integrity fields to all package.json files to prevent NPM from consulting the cache (that is empty)
  addIntegrityFieldsScript = writeTextFile {
    name = "addintegrityfields.js";
    text = ''
      var fs = require('fs');
      var path = require('path');

      function augmentDependencies(baseDir, dependencies) {
          for(var dependencyName in dependencies) {
              var dependency = dependencies[dependencyName];

              // Open package.json and augment metadata fields
              var packageJSONDir = path.join(baseDir, "node_modules", dependencyName);
              var packageJSONPath = path.join(packageJSONDir, "package.json");

              if(fs.existsSync(packageJSONPath)) { // Only augment packages that exist. Sometimes we may have production installs in which development dependencies can be ignored
                  console.log("Adding metadata fields to: "+packageJSONPath);
                  var packageObj = JSON.parse(fs.readFileSync(packageJSONPath));

                  if(dependency.integrity) {
                      packageObj["_integrity"] = dependency.integrity;
                  } else {
                      packageObj["_integrity"] = "sha1-000000000000000000000000000="; // When no _integrity string has been provided (e.g. by Git dependencies), add a dummy one. It does not seem to harm and it bypasses downloads.
                  }

                  if(dependency.resolved) {
                      packageObj["_resolved"] = dependency.resolved; // Adopt the resolved property if one has been provided
                  } else {
                      packageObj["_resolved"] = dependency.version; // Set the resolved version to the version identifier. This prevents NPM from cloning Git repositories.
                  }

                  if(dependency.from !== undefined) { // Adopt from property if one has been provided
                      packageObj["_from"] = dependency.from;
                  }

                  fs.writeFileSync(packageJSONPath, JSON.stringify(packageObj, null, 2));
              }

              // Augment transitive dependencies
              if(dependency.dependencies !== undefined) {
                  augmentDependencies(packageJSONDir, dependency.dependencies);
              }
          }
      }

      if(fs.existsSync("./package-lock.json")) {
          var packageLock = JSON.parse(fs.readFileSync("./package-lock.json"));

          if(packageLock.lockfileVersion !== 1) {
             process.stderr.write("Sorry, I only understand lock file version 1!\n");
             process.exit(1);
          }

          if(packageLock.dependencies !== undefined) {
              augmentDependencies(".", packageLock.dependencies);
          }
      }
    '';
  };

  # Reconstructs a package-lock file from the node_modules/ folder structure and package.json files with dummy sha1 hashes
  reconstructPackageLock = writeTextFile {
    name = "addintegrityfields.js";
    text = ''
      var fs = require('fs');
      var path = require('path');

      var packageObj = JSON.parse(fs.readFileSync("package.json"));

      var lockObj = {
          name: packageObj.name,
          version: packageObj.version,
          lockfileVersion: 1,
          requires: true,
          dependencies: {}
      };

      function augmentPackageJSON(filePath, dependencies) {
          var packageJSON = path.join(filePath, "package.json");
          if(fs.existsSync(packageJSON)) {
              var packageObj = JSON.parse(fs.readFileSync(packageJSON));
              dependencies[packageObj.name] = {
                  version: packageObj.version,
                  integrity: "sha1-000000000000000000000000000=",
                  dependencies: {}
              };
              processDependencies(path.join(filePath, "node_modules"), dependencies[packageObj.name].dependencies);
          }
      }

      function processDependencies(dir, dependencies) {
          if(fs.existsSync(dir)) {
              var files = fs.readdirSync(dir);

              files.forEach(function(entry) {
                  var filePath = path.join(dir, entry);
                  var stats = fs.statSync(filePath);

                  if(stats.isDirectory()) {
                      if(entry.substr(0, 1) == "@") {
                          // When we encounter a namespace folder, augment all packages belonging to the scope
                          var pkgFiles = fs.readdirSync(filePath);

                          pkgFiles.forEach(function(entry) {
                              if(stats.isDirectory()) {
                                  var pkgFilePath = path.join(filePath, entry);
                                  augmentPackageJSON(pkgFilePath, dependencies);
                              }
                          });
                      } else {
                          augmentPackageJSON(filePath, dependencies);
                      }
                  }
              });
          }
      }

      processDependencies("node_modules", lockObj.dependencies);

      fs.writeFileSync("package-lock.json", JSON.stringify(lockObj, null, 2));
    '';
  };

  prepareAndInvokeNPM = {packageName, bypassCache, reconstructLock, npmFlags, production}:
    let
      forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
    in
    ''
        # Pinpoint the versions of all dependencies to the ones that are actually being used
        echo "pinpointing versions of dependencies..."
        source $pinpointDependenciesScriptPath

        # Patch the shebangs of the bundled modules to prevent them from
        # calling executables outside the Nix store as much as possible
        patchShebangs .

        # Deploy the Node.js package by running npm install. Since the
        # dependencies have been provided already by ourselves, it should not
        # attempt to install them again, which is good, because we want to make
        # it Nix's responsibility. If it needs to install any dependencies
        # anyway (e.g. because the dependency parameters are
        # incomplete/incorrect), it fails.
        #
        # The other responsibilities of NPM are kept -- version checks, build
        # steps, postprocessing etc.

        export HOME=$TMPDIR
        cd "${packageName}"
        runHook preRebuild

        ${stdenv.lib.optionalString bypassCache ''
          ${stdenv.lib.optionalString reconstructLock ''
            if [ -f package-lock.json ]
            then
                echo "WARNING: Reconstruct lock option enabled, but a lock file already exists!"
                echo "This will most likely result in version mismatches! We will remove the lock file and regenerate it!"
                rm package-lock.json
            else
                echo "No package-lock.json file found, reconstructing..."
            fi

            node ${reconstructPackageLock}
          ''}

          node ${addIntegrityFieldsScript}
        ''}

        npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} rebuild

        if [ "''${dontNpmInstall-}" != "1" ]
        then
            # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
            rm -f npm-shrinkwrap.json

            npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} install
        fi
    '';

  # Builds and composes an NPM package including all its dependencies
  buildNodePackage =
    { name
    , packageName
    , version
    , dependencies ? []
    , buildInputs ? []
    , production ? true
    , npmFlags ? ""
    , dontNpmInstall ? false
    , bypassCache ? false
    , reconstructLock ? false
    , preRebuild ? ""
    , dontStrip ? true
    , unpackPhase ? "true"
    , buildPhase ? "true"
    , ... }@args:

    let
      extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" ];
    in
    stdenv.mkDerivation ({
      name = "node_${name}-${version}";
      buildInputs = [ tarWrapper python nodejs ]
        ++ stdenv.lib.optional (stdenv.isLinux) utillinux
        ++ stdenv.lib.optional (stdenv.isDarwin) libtool
        ++ buildInputs;

      inherit nodejs;

      inherit dontStrip; # Stripping may fail a build for some package deployments
      inherit dontNpmInstall preRebuild unpackPhase buildPhase;

      compositionScript = composePackage args;
      pinpointDependenciesScript = pinpointDependenciesOfPackage args;

      passAsFile = [ "compositionScript" "pinpointDependenciesScript" ];

      installPhase = ''
        # Create and enter a root node_modules/ folder
        mkdir -p $out/lib/node_modules
        cd $out/lib/node_modules

        # Compose the package and all its dependencies
        source $compositionScriptPath

        ${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}

        # Create symlink to the deployed executable folder, if applicable
        if [ -d "$out/lib/node_modules/.bin" ]
        then
            ln -s $out/lib/node_modules/.bin $out/bin
        fi

        # Create symlinks to the deployed manual page folders, if applicable
        if [ -d "$out/lib/node_modules/${packageName}/man" ]
        then
            mkdir -p $out/share
            for dir in "$out/lib/node_modules/${packageName}/man/"*
            do
                mkdir -p $out/share/man/$(basename "$dir")
                for page in "$dir"/*
                do
                    ln -s $page $out/share/man/$(basename "$dir")
                done
            done
        fi

        # Run post install hook, if provided
        runHook postInstall
      '';
    } // extraArgs);

  # Builds a development shell
  buildNodeShell =
    { name
    , packageName
    , version
    , src
    , dependencies ? []
    , buildInputs ? []
    , production ? true
    , npmFlags ? ""
    , dontNpmInstall ? false
    , bypassCache ? false
    , reconstructLock ? false
    , dontStrip ? true
    , unpackPhase ? "true"
    , buildPhase ? "true"
    , ... }@args:

    let
      extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];

      nodeDependencies = stdenv.mkDerivation ({
        name = "node-dependencies-${name}-${version}";

        buildInputs = [ tarWrapper python nodejs ]
          ++ stdenv.lib.optional (stdenv.isLinux) utillinux
          ++ stdenv.lib.optional (stdenv.isDarwin) libtool
          ++ buildInputs;

        inherit dontStrip; # Stripping may fail a build for some package deployments
        inherit dontNpmInstall unpackPhase buildPhase;

        includeScript = includeDependencies { inherit dependencies; };
        pinpointDependenciesScript = pinpointDependenciesOfPackage args;

        passAsFile = [ "includeScript" "pinpointDependenciesScript" ];

        installPhase = ''
          mkdir -p $out/${packageName}
          cd $out/${packageName}

          source $includeScriptPath

          # Create fake package.json to make the npm commands work properly
          cp ${src}/package.json .
          chmod 644 package.json
          ${stdenv.lib.optionalString bypassCache ''
            if [ -f ${src}/package-lock.json ]
            then
                cp ${src}/package-lock.json .
            fi
          ''}

          # Go to the parent folder to make sure that all packages are pinpointed
          cd ..
          ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}

          ${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}

          # Expose the executables that were installed
          cd ..
          ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}

          mv ${packageName} lib
          ln -s $out/lib/node_modules/.bin $out/bin
        '';
      } // extraArgs);
    in
    stdenv.mkDerivation {
      name = "node-shell-${name}-${version}";

      buildInputs = [ python nodejs ] ++ stdenv.lib.optional (stdenv.isLinux) utillinux ++ buildInputs;
      buildCommand = ''
        mkdir -p $out/bin
        cat > $out/bin/shell <<EOF
        #! ${stdenv.shell} -e
        $shellHook
        exec ${stdenv.shell}
        EOF
        chmod +x $out/bin/shell
      '';

      # Provide the dependencies in a development shell through the NODE_PATH environment variable
      inherit nodeDependencies;
      shellHook = stdenv.lib.optionalString (dependencies != []) ''
        export NODE_PATH=${nodeDependencies}/lib/node_modules
        export PATH="${nodeDependencies}/bin:$PATH"
      '';
    };
in
{
  buildNodeSourceDist = stdenv.lib.makeOverridable buildNodeSourceDist;
  buildNodePackage = stdenv.lib.makeOverridable buildNodePackage;
  buildNodeShell = stdenv.lib.makeOverridable buildNodeShell;
}

A pkgs/servers/matrix-synapse/matrix-appservice-irc/node-packages.nix => pkgs/servers/matrix-synapse/matrix-appservice-irc/node-packages.nix +2790 -0
@@ 0,0 1,2790 @@
# This file has been generated by node2nix 1.8.0. Do not edit!

{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:

let
  sources = {
    "@babel/runtime-7.12.5" = {
      name = "_at_babel_slash_runtime";
      packageName = "@babel/runtime";
      version = "7.12.5";
      src = fetchurl {
        url = "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz";
        sha512 = "plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==";
      };
    };
    "@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==";
      };
    };
    "@sentry/core-5.27.4" = {
      name = "_at_sentry_slash_core";
      packageName = "@sentry/core";
      version = "5.27.4";
      src = fetchurl {
        url = "https://registry.npmjs.org/@sentry/core/-/core-5.27.4.tgz";
        sha512 = "IbI37cIZU/qBQouuUXaLbGF/9xYFp5STqmj1Gv64l0IZe4JnEp06V3yD5GxQ/mJ78vSfOqfwLooVCUw9FA61sQ==";
      };
    };
    "@sentry/hub-5.27.4" = {
      name = "_at_sentry_slash_hub";
      packageName = "@sentry/hub";
      version = "5.27.4";
      src = fetchurl {
        url = "https://registry.npmjs.org/@sentry/hub/-/hub-5.27.4.tgz";
        sha512 = "Ba1AqcjvSd2S+fpdXtXCrVXdrzq9E2Etb2eHUOkEYwSsq7StMOw7E8YHDPAo+to8zUbpMPz/Z9XGhFkyAbImGQ==";
      };
    };
    "@sentry/minimal-5.27.4" = {
      name = "_at_sentry_slash_minimal";
      packageName = "@sentry/minimal";
      version = "5.27.4";
      src = fetchurl {
        url = "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.27.4.tgz";
        sha512 = "biw5YfIQwvDoaRhLarfeRQ6MJ9UJOoDTmu8Kgg18prJy4rtfDowNJP0OBs5XAsTk6SWAXiE3g7vqUJBXgs7BWA==";
      };
    };
    "@sentry/node-5.27.4" = {
      name = "_at_sentry_slash_node";
      packageName = "@sentry/node";
      version = "5.27.4";
      src = fetchurl {
        url = "https://registry.npmjs.org/@sentry/node/-/node-5.27.4.tgz";
        sha512 = "fv3FfQ6FiNV56LKk6t48oNw8qgf7X5fEhqhvKAoU7w+BL9AhChzh9v7sWn9ppDtRFE45tFfsZh0J/8ox5jpnfQ==";
      };
    };
    "@sentry/tracing-5.27.4" = {
      name = "_at_sentry_slash_tracing";
      packageName = "@sentry/tracing";
      version = "5.27.4";
      src = fetchurl {
        url = "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.27.4.tgz";
        sha512 = "f3nG8ozCdcbFOzsnBCZ8w+/WfoNiAd0Ctr643L0rsFbaSzPWxbPMe3LNVrWwFVo6mHacG3/2HYmJ3CYMiWyTKQ==";
      };
    };
    "@sentry/types-5.27.4" = {
      name = "_at_sentry_slash_types";
      packageName = "@sentry/types";
      version = "5.27.4";
      src = fetchurl {
        url = "https://registry.npmjs.org/@sentry/types/-/types-5.27.4.tgz";
        sha512 = "41h3c7tgtSS8UBmfvEckSr+7V7/IVOjt/EiydyOd6s0N18zSFfGY5HdA6g+eFtIJK3DhWkUHCHZNanD5IY5YCQ==";
      };
    };
    "@sentry/utils-5.27.4" = {
      name = "_at_sentry_slash_utils";
      packageName = "@sentry/utils";
      version = "5.27.4";
      src = fetchurl {
        url = "https://registry.npmjs.org/@sentry/utils/-/utils-5.27.4.tgz";
        sha512 = "shV1I/q+Tob3hUxRj11DfMhe9PNDiv85hUUoRloZGGwu275dMwpswb2uwgSmjc2Ao4pnMKVx8TL1hC3kGLVHTQ==";
      };
    };
    "@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/connect-3.4.33" = {
      name = "_at_types_slash_connect";
      packageName = "@types/connect";
      version = "3.4.33";
      src = fetchurl {
        url = "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz";
        sha512 = "2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==";
      };
    };
    "@types/express-4.17.9" = {
      name = "_at_types_slash_express";
      packageName = "@types/express";
      version = "4.17.9";
      src = fetchurl {
        url = "https://registry.npmjs.org/@types/express/-/express-4.17.9.tgz";
        sha512 = "SDzEIZInC4sivGIFY4Sz1GG6J9UObPwCInYJjko2jzOf/Imx/dlpume6Xxwj1ORL82tBbmN4cPDIDkLbWHk9hw==";
      };
    };
    "@types/express-serve-static-core-4.17.13" = {
      name = "_at_types_slash_express-serve-static-core";
      packageName = "@types/express-serve-static-core";
      version = "4.17.13";
      src = fetchurl {
        url = "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.13.tgz";
        sha512 = "RgDi5a4nuzam073lRGKTUIaL3eF2+H7LJvJ8eUnCI0wA6SNjXc44DCmWNiTLs/AZ7QlsFWZiw/gTG3nSQGL0fA==";
      };
    };
    "@types/mime-2.0.3" = {
      name = "_at_types_slash_mime";
      packageName = "@types/mime";
      version = "2.0.3";
      src = fetchurl {
        url = "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz";
        sha512 = "Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==";
      };
    };
    "@types/node-14.14.7" = {
      name = "_at_types_slash_node";
      packageName = "@types/node";
      version = "14.14.7";
      src = fetchurl {
        url = "https://registry.npmjs.org/@types/node/-/node-14.14.7.tgz";
        sha512 = "Zw1vhUSQZYw+7u5dAwNbIA9TuTotpzY/OF7sJM9FqPOF3SPjKnxrjoTktXDZgUjybf4cWVBP7O8wvKdSaGHweg==";
      };
    };
    "@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/serve-static-1.13.7" = {
      name = "_at_types_slash_serve-static";
      packageName = "@types/serve-static";
      version = "1.13.7";
      src = fetchurl {
        url = "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.7.tgz";
        sha512 = "3diZWucbR+xTmbDlU+FRRxBf+31OhFew7cJXML/zh9NmvSPTNoFecAwHB66BUqFgENJtqMiyl7JAwUE/siqdLw==";
      };
    };
    "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==";
      };
    };
    "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==";
      };
    };
    "agent-base-6.0.2" = {
      name = "agent-base";
      packageName = "agent-base";
      version = "6.0.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz";
        sha512 = "RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==";
      };
    };
    "ajv-6.12.6" = {
      name = "ajv";
      packageName = "ajv";
      version = "6.12.6";
      src = fetchurl {
        url = "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz";
        sha512 = "j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==";
      };
    };
    "another-json-0.2.0" = {
      name = "another-json";
      packageName = "another-json";
      version = "0.2.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/another-json/-/another-json-0.2.0.tgz";
        sha1 = "b5f4019c973b6dd5c6506a2d93469cb6d32aeedc";
      };
    };
    "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==";
      };
    };
    "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-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";
      };
    };
    "asn1-0.2.4" = {
      name = "asn1";
      packageName = "asn1";
      version = "0.2.4";
      src = fetchurl {
        url = "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz";
        sha512 = "jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==";
      };
    };
    "assert-plus-1.0.0" = {
      name = "assert-plus";
      packageName = "assert-plus";
      version = "1.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
        sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
      };
    };
    "async-0.2.10" = {
      name = "async";
      packageName = "async";
      version = "0.2.10";
      src = fetchurl {
        url = "https://registry.npmjs.org/async/-/async-0.2.10.tgz";
        sha1 = "b6bbe0b0674b9d719708ca38de8c237cb526c3d1";
      };
    };
    "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";
      };
    };
    "aws-sign2-0.7.0" = {
      name = "aws-sign2";
      packageName = "aws-sign2";
      version = "0.7.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz";
        sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
      };
    };
    "aws4-1.11.0" = {
      name = "aws4";
      packageName = "aws4";
      version = "1.11.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz";
        sha512 = "xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==";
      };
    };
    "base-x-3.0.8" = {
      name = "base-x";
      packageName = "base-x";
      version = "3.0.8";
      src = fetchurl {
        url = "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz";
        sha512 = "Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==";
      };
    };
    "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==";
      };
    };
    "bcrypt-pbkdf-1.0.2" = {
      name = "bcrypt-pbkdf";
      packageName = "bcrypt-pbkdf";
      version = "1.0.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
        sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
      };
    };
    "binary-search-tree-0.2.5" = {
      name = "binary-search-tree";
      packageName = "binary-search-tree";
      version = "0.2.5";
      src = fetchurl {
        url = "https://registry.npmjs.org/binary-search-tree/-/binary-search-tree-0.2.5.tgz";
        sha1 = "7dbb3b210fdca082450dad2334c304af39bdc784";
      };
    };
    "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";
      };
    };
    "bluebird-3.7.2" = {
      name = "bluebird";
      packageName = "bluebird";
      version = "3.7.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz";
        sha512 = "XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==";
      };
    };
    "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==";
      };
    };
    "browser-request-0.3.3" = {
      name = "browser-request";
      packageName = "browser-request";
      version = "0.3.3";
      src = fetchurl {
        url = "https://registry.npmjs.org/browser-request/-/browser-request-0.3.3.tgz";
        sha1 = "9ece5b5aca89a29932242e18bf933def9876cc17";
      };
    };
    "bs58-4.0.1" = {
      name = "bs58";
      packageName = "bs58";
      version = "4.0.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz";
        sha1 = "be161e76c354f6f788ae4071f63f34e8c4f0a42a";
      };
    };
    "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==";
      };
    };
    "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==";
      };
    };
    "caseless-0.12.0" = {
      name = "caseless";
      packageName = "caseless";
      version = "0.12.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
        sha1 = "1b681c21ff84033c826543090689420d187151dc";
      };
    };
    "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-3.0.0" = {
      name = "chalk";
      packageName = "chalk";
      version = "3.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz";
        sha512 = "4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==";
      };
    };
    "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==";
      };
    };
    "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==";
      };
    };
    "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-0.4.1" = {
      name = "cookie";
      packageName = "cookie";
      version = "0.4.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz";
        sha512 = "ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==";
      };
    };
    "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";
      };
    };
    "dashdash-1.14.1" = {
      name = "dashdash";
      packageName = "dashdash";
      version = "1.14.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
        sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
      };
    };
    "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-4.3.0" = {
      name = "debug";
      packageName = "debug";
      version = "4.3.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/debug/-/debug-4.3.0.tgz";
        sha512 = "jjO6JD2rKfiZQnBoRzhRTbXjHLGLfH+UtGkWLc/UXAh/rzZMyjbgn0NcfFpqT8nd1kTtFnDiJcrIFkq4UKeJVg==";
      };
    };
    "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";
      };
    };
    "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";
      };
    };
    "dom-serializer-1.1.0" = {
      name = "dom-serializer";
      packageName = "dom-serializer";
      version = "1.1.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.1.0.tgz";
        sha512 = "ox7bvGXt2n+uLWtCRLybYx60IrOlWL/aCebWJk1T0d4m3y2tzf4U3ij9wBMUb6YJZpz06HCCYuyCDveE2xXmzQ==";
      };
    };
    "domelementtype-2.0.2" = {
      name = "domelementtype";
      packageName = "domelementtype";
      version = "2.0.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.2.tgz";
        sha512 = "wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==";
      };
    };
    "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==";
      };
    };
    "domutils-2.4.2" = {
      name = "domutils";
      packageName = "domutils";
      version = "2.4.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/domutils/-/domutils-2.4.2.tgz";
        sha512 = "NKbgaM8ZJOecTZsIzW5gSuplsX2IWW2mIK7xVr8hTQF2v1CJWTmLZ1HOCh5sH+IzVPAGE5IucooOkvwBRAdowA==";
      };
    };
    "ecc-jsbn-0.1.2" = {
      name = "ecc-jsbn";
      packageName = "ecc-jsbn";
      version = "0.1.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
        sha1 = "3a83a904e54353287874c564b7549386849a98c9";
      };
    };
    "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";
      };
    };
    "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";
      };
    };
    "escape-string-regexp-2.0.0" = {
      name = "escape-string-regexp";
      packageName = "escape-string-regexp";
      version = "2.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz";
        sha512 = "UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==";
      };
    };
    "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==";
      };
    };
    "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";
      };
    };
    "eventemitter3-4.0.7" = {
      name = "eventemitter3";
      packageName = "eventemitter3";
      version = "4.0.7";
      src = fetchurl {
        url = "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz";
        sha512 = "8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==";
      };
    };
    "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-2.0.2" = {
      name = "extend";
      packageName = "extend";
      version = "2.0.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/extend/-/extend-2.0.2.tgz";
        sha512 = "AgFD4VU+lVLP6vjnlNfF7OeInLTyeyckCNPEsuxz1vi786UuK/nk6ynPuhn/h+Ju9++TQyr5EpLRI14fc1QtTQ==";
      };
    };
    "extend-3.0.2" = {
      name = "extend";
      packageName = "extend";
      version = "3.0.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz";
        sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==";
      };
    };
    "extsprintf-1.3.0" = {
      name = "extsprintf";
      packageName = "extsprintf";
      version = "1.3.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
        sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
      };
    };
    "fast-deep-equal-3.1.3" = {
      name = "fast-deep-equal";
      packageName = "fast-deep-equal";
      version = "3.1.3";
      src = fetchurl {
        url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz";
        sha512 = "f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==";
      };
    };
    "fast-json-stable-stringify-2.1.0" = {
      name = "fast-json-stable-stringify";
      packageName = "fast-json-stable-stringify";
      version = "2.1.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz";
        sha512 = "lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==";
      };
    };
    "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-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.5.7" = {
      name = "file-stream-rotator";
      packageName = "file-stream-rotator";
      version = "0.5.7";
      src = fetchurl {
        url = "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.5.7.tgz";
        sha512 = "VYb3HZ/GiAGUCrfeakO8Mp54YGswNUHvL7P09WQcXAJNSj3iQ5QraYSp3cIn1MUyw6uzfgN/EFOarCNa4JvUHQ==";
      };
    };
    "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==";
      };
    };
    "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==";
      };
    };
    "forever-agent-0.6.1" = {
      name = "forever-agent";
      packageName = "forever-agent";
      version = "0.6.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
        sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
      };
    };
    "form-data-2.3.3" = {
      name = "form-data";
      packageName = "form-data";
      version = "2.3.3";
      src = fetchurl {
        url = "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz";
        sha512 = "1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==";
      };
    };
    "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";
      };
    };
    "generate-function-2.3.1" = {
      name = "generate-function";
      packageName = "generate-function";
      version = "2.3.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz";
        sha512 = "eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==";
      };
    };
    "generate-object-property-1.2.0" = {
      name = "generate-object-property";
      packageName = "generate-object-property";
      version = "1.2.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz";
        sha1 = "9c0e1c40308ce804f4783618b937fa88f99d50d0";
      };
    };
    "getpass-0.1.7" = {
      name = "getpass";
      packageName = "getpass";
      version = "0.1.7";
      src = fetchurl {
        url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
        sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
      };
    };
    "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==";
      };
    };
    "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==";
      };
    };
    "har-schema-2.0.0" = {
      name = "har-schema";
      packageName = "har-schema";
      version = "2.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz";
        sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
      };
    };
    "har-validator-5.1.5" = {
      name = "har-validator";
      packageName = "har-validator";
      version = "5.1.5";
      src = fetchurl {
        url = "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz";
        sha512 = "nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==";
      };
    };
    "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==";
      };
    };
    "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==";
      };
    };
    "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==";
      };
    };
    "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-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==";
      };
    };
    "http-signature-1.2.0" = {
      name = "http-signature";
      packageName = "http-signature";
      version = "1.2.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz";
        sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
      };
    };
    "https-proxy-agent-5.0.0" = {
      name = "https-proxy-agent";
      packageName = "https-proxy-agent";
      version = "5.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz";
        sha512 = "EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==";
      };
    };
    "iconv-2.3.5" = {
      name = "iconv";
      packageName = "iconv";
      version = "2.3.5";
      src = fetchurl {
        url = "https://registry.npmjs.org/iconv/-/iconv-2.3.5.tgz";
        sha512 = "U5ajDbtDfadp7pvUMC0F2XbkP5vQn9Xrwa6UptePl+cK8EILxapAt3sXers9B3Gxagk+zVjL2ELKuzQvyqOwug==";
      };
    };
    "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==";
      };
    };
    "immediate-3.0.6" = {
      name = "immediate";
      packageName = "immediate";
      version = "3.0.6";
      src = fetchurl {
        url = "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz";
        sha1 = "9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b";
      };
    };
    "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";
      };
    };
    "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==";
      };
    };
    "irc-colors-1.5.0" = {
      name = "irc-colors";
      packageName = "irc-colors";
      version = "1.5.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/irc-colors/-/irc-colors-1.5.0.tgz";
        sha512 = "HtszKchBQTcqw1DC09uD7i7vvMayHGM1OCo6AHt5pkgZEyo99ClhHTMJdf+Ezc9ovuNNxcH89QfyclGthjZJOw==";
      };
    };
    "irc-git://github.com/matrix-org/node-irc#9028c2197c216dd8e6fc2cb3cc07ce2d6bf741a7" = {
      name = "irc";
      packageName = "irc";
      version = "0.3.12";
      src = fetchgit {
        url = "git://github.com/matrix-org/node-irc";
        rev = "9028c2197c216dd8e6fc2cb3cc07ce2d6bf741a7";
        sha256 = "0785d44389d34d7e7c614437c8c8e108f32b5d5022e6f29c47a6a40090d277a7";
      };
    };
    "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-my-ip-valid-1.0.0" = {
      name = "is-my-ip-valid";
      packageName = "is-my-ip-valid";
      version = "1.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz";
        sha512 = "gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==";
      };
    };
    "is-my-json-valid-2.20.5" = {
      name = "is-my-json-valid";
      packageName = "is-my-json-valid";
      version = "2.20.5";
      src = fetchurl {
        url = "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.5.tgz";
        sha512 = "VTPuvvGQtxvCeghwspQu1rBgjYUT6FGxPlvFKbYuFtgc4ADsX3U5ihZOYN0qyU6u+d4X9xXb0IT5O6QpXKt87A==";
      };
    };
    "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-property-1.0.2" = {
      name = "is-property";
      packageName = "is-property";
      version = "1.0.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz";
        sha1 = "57fe1c4e48474edd65b09911f26b1cd4095dda84";
      };
    };
    "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==";
      };
    };
    "is-typedarray-1.0.0" = {
      name = "is-typedarray";
      packageName = "is-typedarray";
      version = "1.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
        sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
      };
    };
    "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";
      };
    };
    "isstream-0.1.2" = {
      name = "isstream";
      packageName = "isstream";
      version = "0.1.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
        sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
      };
    };
    "js-yaml-3.14.0" = {
      name = "js-yaml";
      packageName = "js-yaml";
      version = "3.14.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz";
        sha512 = "/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==";
      };
    };
    "jsbn-0.1.1" = {
      name = "jsbn";
      packageName = "jsbn";
      version = "0.1.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
        sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
      };
    };
    "json-schema-0.2.3" = {
      name = "json-schema";
      packageName = "json-schema";
      version = "0.2.3";
      src = fetchurl {
        url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
        sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
      };
    };
    "json-schema-traverse-0.4.1" = {
      name = "json-schema-traverse";
      packageName = "json-schema-traverse";
      version = "0.4.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
        sha512 = "xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==";
      };
    };
    "json-stringify-safe-5.0.1" = {
      name = "json-stringify-safe";
      packageName = "json-stringify-safe";
      version = "5.0.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
        sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
      };
    };
    "jsonpointer-4.1.0" = {
      name = "jsonpointer";
      packageName = "jsonpointer";
      version = "4.1.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz";
        sha512 = "CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==";
      };
    };
    "jsprim-1.4.1" = {
      name = "jsprim";
      packageName = "jsprim";
      version = "1.4.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz";
        sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
      };
    };
    "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==";
      };
    };
    "lie-3.1.1" = {
      name = "lie";
      packageName = "lie";
      version = "3.1.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz";
        sha1 = "9a436b2cc7746ca59de7a41fa469b3efb76bd87e";
      };
    };
    "localforage-1.9.0" = {
      name = "localforage";
      packageName = "localforage";
      version = "1.9.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/localforage/-/localforage-1.9.0.tgz";
        sha512 = "rR1oyNrKulpe+VM9cYmcFn6tsHuokyVHFaCM3+osEmxaHTbEk8oQu6eGDfS6DQLWi/N67XRmB8ECG37OES368g==";
      };
    };
    "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==";
      };
    };
    "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==";
      };
    };
    "loglevel-1.7.0" = {
      name = "loglevel";
      packageName = "loglevel";
      version = "1.7.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/loglevel/-/loglevel-1.7.0.tgz";
        sha512 = "i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ==";
      };
    };
    "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==";
      };
    };
    "lru-cache-5.1.1" = {
      name = "lru-cache";
      packageName = "lru-cache";
      version = "5.1.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz";
        sha512 = "KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==";
      };
    };
    "lru_map-0.3.3" = {
      name = "lru_map";
      packageName = "lru_map";
      version = "0.3.3";
      src = fetchurl {
        url = "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz";
        sha1 = "b5c8351b9464cbd750335a79650a0ec0e56118dd";
      };
    };
    "matrix-appservice-0.6.0" = {
      name = "matrix-appservice";
      packageName = "matrix-appservice";
      version = "0.6.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/matrix-appservice/-/matrix-appservice-0.6.0.tgz";
        sha512 = "MkM4PzBeNBi/AcSDWgUD6zWlGY2ckBSF3dn8IgXWf44uHDx6WZfWyIt4E/KKsx9iy3EO78IfWmK+7Qva4eug5A==";
      };
    };
    "matrix-appservice-0.7.1" = {
      name = "matrix-appservice";
      packageName = "matrix-appservice";
      version = "0.7.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/matrix-appservice/-/matrix-appservice-0.7.1.tgz";
        sha512 = "oUjEz+eKfBw66FnQ3/D7PWcq+/oq9gzJVlNOMQUSGXgK70o8JT3toeFMYsJChaIimU5fIsHbTVyHC+eVGb7MSQ==";
      };
    };
    "matrix-appservice-bridge-2.3.1" = {
      name = "matrix-appservice-bridge";
      packageName = "matrix-appservice-bridge";
      version = "2.3.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/matrix-appservice-bridge/-/matrix-appservice-bridge-2.3.1.tgz";
        sha512 = "sHr3s0O7CetW3Zt1zo2wd23GadQzzDtQ518uFGs+j9kADwdJrVIHO/3YSXwjYUGIGH4MqPyFu7JxCS/hJXpBHw==";
      };
    };
    "matrix-bot-sdk-0.4.0" = {
      name = "matrix-bot-sdk";
      packageName = "matrix-bot-sdk";
      version = "0.4.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/matrix-bot-sdk/-/matrix-bot-sdk-0.4.0.tgz";
        sha512 = "ZIICFEYDsSX3emPnVRTV1FIV22zkt7KiJbTYN4rHQ3Z/rk66RB7Y+TMHxrkJCqPs3xVdaGmGkh5m+hNi4fibRg==";
      };
    };
    "matrix-js-sdk-8.5.0" = {
      name = "matrix-js-sdk";
      packageName = "matrix-js-sdk";
      version = "8.5.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-8.5.0.tgz";
        sha512 = "RJCqK/QkesL+63rX4C4mShEFw/ZR20D1UMw1RKY8pQhv1/7Skz+v5BTv/UCqG45E3rRYMarNOwy13CZ+yq33FA==";
      };
    };
    "matrix-lastactive-0.1.5" = {
      name = "matrix-lastactive";
      packageName = "matrix-lastactive";
      version = "0.1.5";
      src = fetchurl {
        url = "https://registry.npmjs.org/matrix-lastactive/-/matrix-lastactive-0.1.5.tgz";
        sha512 = "JFIMJPNGGqi0myzIlN94SQReUbCrWi1TW5PZih1OGXzUj2wXYz3puktV/f64HZYn6D1ZKcwxZdLuNCG8cRuCyw==";
      };
    };
    "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-db-1.44.0" = {
      name = "mime-db";
      packageName = "mime-db";
      version = "1.44.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz";
        sha512 = "/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==";
      };
    };
    "mime-types-2.1.27" = {
      name = "mime-types";
      packageName = "mime-types";
      version = "2.1.27";
      src = fetchurl {
        url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz";
        sha512 = "JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==";
      };
    };
    "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==";
      };
    };
    "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==";
      };
    };
    "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==";
      };
    };
    "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.2" = {
      name = "ms";
      packageName = "ms";
      version = "2.1.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
        sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==";
      };
    };
    "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==";
      };
    };
    "nedb-1.8.0" = {
      name = "nedb";
      packageName = "nedb";
      version = "1.8.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/nedb/-/nedb-1.8.0.tgz";
        sha1 = "0e3502cd82c004d5355a43c9e55577bd7bd91d88";
      };
    };
    "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-gyp-build-4.2.3" = {
      name = "node-gyp-build";
      packageName = "node-gyp-build";
      version = "4.2.3";
      src = fetchurl {
        url = "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz";
        sha512 = "MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==";
      };
    };
    "nopt-3.0.6" = {
      name = "nopt";
      packageName = "nopt";
      version = "3.0.6";
      src = fetchurl {
        url = "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz";
        sha1 = "c6465dbf08abcd4db359317f79ac68a646b28ff9";
      };
    };
    "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==";
      };
    };
    "oauth-sign-0.9.0" = {
      name = "oauth-sign";
      packageName = "oauth-sign";
      version = "0.9.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz";
        sha512 = "fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==";
      };
    };
    "object-hash-2.0.3" = {
      name = "object-hash";
      packageName = "object-hash";
      version = "2.0.3";
      src = fetchurl {
        url = "https://registry.npmjs.org/object-hash/-/object-hash-2.0.3.tgz";
        sha512 = "JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg==";
      };
    };
    "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==";
      };
    };
    "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==";
      };
    };
    "optimist-0.3.7" = {
      name = "optimist";
      packageName = "optimist";
      version = "0.3.7";
      src = fetchurl {
        url = "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz";
        sha1 = "c90941ad59e4273328923074d2cf2e7cbc6ec0d9";
      };
    };
    "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-finally-1.0.0" = {
      name = "p-finally";
      packageName = "p-finally";
      version = "1.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz";
        sha1 = "3fbcfb15b899a44123b34b6dcc18b724336a2cae";
      };
    };
    "p-queue-6.6.2" = {
      name = "p-queue";
      packageName = "p-queue";
      version = "6.6.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz";
        sha512 = "RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==";
      };
    };
    "p-timeout-3.2.0" = {
      name = "p-timeout";
      packageName = "p-timeout";
      version = "3.2.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz";
        sha512 = "rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==";
      };
    };
    "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-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";
      };
    };
    "performance-now-2.1.0" = {
      name = "performance-now";
      packageName = "performance-now";
      version = "2.1.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz";
        sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
      };
    };
    "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-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-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==";
      };
    };
    "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-12.0.0" = {
      name = "prom-client";
      packageName = "prom-client";
      version = "12.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/prom-client/-/prom-client-12.0.0.tgz";
        sha512 = "JbzzHnw0VDwCvoqf8y1WDtq4wSBAbthMB1pcVI/0lzdqHGJI3KBJDXle70XK+c7Iv93Gihqo0a5LlOn+g8+DrQ==";
      };
    };
    "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==";
      };
    };
    "psl-1.8.0" = {
      name = "psl";
      packageName = "psl";
      version = "1.8.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz";
        sha512 = "RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==";
      };
    };
    "punycode-2.1.1" = {
      name = "punycode";
      packageName = "punycode";
      version = "2.1.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz";
        sha512 = "XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==";
      };
    };
    "qs-6.5.2" = {
      name = "qs";
      packageName = "qs";
      version = "6.5.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz";
        sha512 = "N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==";
      };
    };
    "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==";
      };
    };
    "qs-6.9.4" = {
      name = "qs";
      packageName = "qs";
      version = "6.9.4";
      src = fetchurl {
        url = "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz";
        sha512 = "A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==";
      };
    };
    "quick-lru-4.0.1" = {
      name = "quick-lru";
      packageName = "quick-lru";
      version = "4.0.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz";
        sha512 = "ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==";
      };
    };
    "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==";
      };
    };
    "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==";
      };
    };
    "rebuild-0.1.2" = {
      name = "rebuild";
      packageName = "rebuild";
      version = "0.1.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/rebuild/-/rebuild-0.1.2.tgz";
        sha1 = "03acdea5515130b479092746e093daf8cf883e93";
      };
    };
    "regenerator-runtime-0.13.7" = {
      name = "regenerator-runtime";
      packageName = "regenerator-runtime";
      version = "0.13.7";
      src = fetchurl {
        url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz";
        sha512 = "a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==";
      };
    };
    "request-2.88.2" = {
      name = "request";
      packageName = "request";
      version = "2.88.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/request/-/request-2.88.2.tgz";
        sha512 = "MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==";
      };
    };
    "request-promise-4.2.6" = {
      name = "request-promise";
      packageName = "request-promise";
      version = "4.2.6";
      src = fetchurl {
        url = "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz";
        sha512 = "HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==";
      };
    };
    "request-promise-core-1.1.4" = {
      name = "request-promise-core";
      packageName = "request-promise-core";
      version = "1.1.4";
      src = fetchurl {
        url = "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz";
        sha512 = "TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==";
      };
    };
    "request-promise-native-1.0.9" = {
      name = "request-promise-native";
      packageName = "request-promise-native";
      version = "1.0.9";
      src = fetchurl {
        url = "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz";
        sha512 = "wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==";
      };
    };
    "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==";
      };
    };
    "safe-buffer-5.2.1" = {
      name = "safe-buffer";
      packageName = "safe-buffer";
      version = "5.2.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz";
        sha512 = "rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==";
      };
    };
    "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==";
      };
    };
    "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==";
      };
    };
    "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==";
      };
    };
    "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==";
      };
    };
    "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";
      };
    };
    "sshpk-1.16.1" = {
      name = "sshpk";
      packageName = "sshpk";
      version = "1.16.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz";
        sha512 = "HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==";
      };
    };
    "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";
      };
    };
    "stealthy-require-1.1.1" = {
      name = "stealthy-require";
      packageName = "stealthy-require";
      version = "1.1.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz";
        sha1 = "35b09875b4ff49f26a777e509b3090a3226bf24b";
      };
    };
    "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_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==";
      };
    };
    "string_decoder-1.3.0" = {
      name = "string_decoder";
      packageName = "string_decoder";
      version = "1.3.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz";
        sha512 = "hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==";
      };
    };
    "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==";
      };
    };
    "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==";
      };
    };
    "tough-cookie-2.5.0" = {
      name = "tough-cookie";
      packageName = "tough-cookie";
      version = "2.5.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz";
        sha512 = "nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==";
      };
    };
    "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.14.1" = {
      name = "tslib";
      packageName = "tslib";
      version = "1.14.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz";
        sha512 = "Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==";
      };
    };
    "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-0.14.5" = {
      name = "tweetnacl";
      packageName = "tweetnacl";
      version = "0.14.5";
      src = fetchurl {
        url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
        sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
      };
    };
    "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==";
      };
    };
    "underscore-1.4.4" = {
      name = "underscore";
      packageName = "underscore";
      version = "1.4.4";
      src = fetchurl {
        url = "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz";
        sha1 = "61a6a32010622afa07963bf325203cf12239d604";
      };
    };
    "unhomoglyph-1.0.6" = {
      name = "unhomoglyph";
      packageName = "unhomoglyph";
      version = "1.0.6";
      src = fetchurl {
        url = "https://registry.npmjs.org/unhomoglyph/-/unhomoglyph-1.0.6.tgz";
        sha512 = "7uvcWI3hWshSADBu4JpnyYbTVc7YlhF5GDW/oPD5AxIxl34k4wXR3WDkPnzLxkN32LiTCTKMQLtKVZiwki3zGg==";
      };
    };
    "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";
      };
    };
    "uri-js-4.4.0" = {
      name = "uri-js";
      packageName = "uri-js";
      version = "4.4.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz";
        sha512 = "B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==";
      };
    };
    "utf-8-validate-5.0.3" = {
      name = "utf-8-validate";
      packageName = "utf-8-validate";
      version = "5.0.3";
      src = fetchurl {
        url = "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.3.tgz";
        sha512 = "jtJM6fpGv8C1SoH4PtG22pGto6x+Y8uPprW0tw3//gGFhDDTiuksgradgFN6yRayDP4SyZZa6ZMGHLIa17+M8A==";
      };
    };
    "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";
      };
    };
    "verror-1.10.0" = {
      name = "verror";
      packageName = "verror";
      version = "1.10.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
        sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
      };
    };
    "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-daily-rotate-file-4.5.0" = {
      name = "winston-daily-rotate-file";
      packageName = "winston-daily-rotate-file";
      version = "4.5.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-4.5.0.tgz";
        sha512 = "/HqeWiU48dzGqcrABRlxYWVMdL6l3uKCtFSJyrqK+E2rLnSFNsgYpvwx15EgTitBLNzH69lQd/+z2ASryV2aqw==";
      };
    };
    "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==";
      };
    };
    "wordwrap-0.0.3" = {
      name = "wordwrap";
      packageName = "wordwrap";
      version = "0.0.3";
      src = fetchurl {
        url = "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz";
        sha1 = "a3d5da6cd5c0bc0008d37234bbaf1bed63059107";
      };
    };
    "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==";
      };
    };
  };
in
{
  "matrix-appservice-irc-0.22.0" = nodeEnv.buildNodePackage {
    name = "matrix-appservice-irc";
    packageName = "matrix-appservice-irc";
    version = "0.22.0";
    src = fetchurl {
      url = "https://registry.npmjs.org/matrix-appservice-irc/-/matrix-appservice-irc-0.22.0.tgz";
      sha512 = "6Do/htUTuV94O7vStZ5gHw7ItCi6UlTSZgF7FQvWFksLVOa2h3N/mR7ahlpKAArgVzS3jTGGXnApFwKXQVOvnQ==";
    };
    dependencies = [
      sources."@babel/runtime-7.12.5"
      sources."@dabh/diagnostics-2.0.2"
      sources."@sentry/core-5.27.4"
      sources."@sentry/hub-5.27.4"
      sources."@sentry/minimal-5.27.4"
      sources."@sentry/node-5.27.4"
      sources."@sentry/tracing-5.27.4"
      sources."@sentry/types-5.27.4"
      sources."@sentry/utils-5.27.4"
      sources."@types/body-parser-1.19.0"
      sources."@types/connect-3.4.33"
      sources."@types/express-4.17.9"
      sources."@types/express-serve-static-core-4.17.13"
      sources."@types/mime-2.0.3"
      sources."@types/node-14.14.7"
      sources."@types/qs-6.9.5"
      sources."@types/range-parser-1.2.3"
      sources."@types/serve-static-1.13.7"
      sources."abbrev-1.1.1"
      sources."accepts-1.3.7"
      sources."agent-base-6.0.2"
      sources."ajv-6.12.6"
      sources."another-json-0.2.0"
      sources."ansi-styles-4.3.0"
      sources."argparse-1.0.10"
      sources."array-flatten-1.1.1"
      sources."asn1-0.2.4"
      sources."assert-plus-1.0.0"
      sources."async-0.2.10"
      sources."asynckit-0.4.0"
      sources."aws-sign2-0.7.0"
      sources."aws4-1.11.0"
      sources."base-x-3.0.8"
      sources."basic-auth-2.0.1"
      sources."bcrypt-pbkdf-1.0.2"
      sources."binary-search-tree-0.2.5"
      sources."bintrees-1.0.1"
      sources."bluebird-3.7.2"
      (sources."body-parser-1.19.0" // {
        dependencies = [
          sources."debug-2.6.9"
          sources."ms-2.0.0"
        ];
      })
      sources."browser-request-0.3.3"
      sources."bs58-4.0.1"
      sources."buffer-writer-2.0.0"
      sources."bytes-3.1.0"
      sources."caseless-0.12.0"
      sources."chalk-4.1.0"
      (sources."color-3.0.0" // {
        dependencies = [
          sources."color-convert-1.9.3"
          sources."color-name-1.1.3"
        ];
      })
      sources."color-convert-2.0.1"
      sources."color-name-1.1.4"
      sources."color-string-1.5.4"
      sources."colors-1.4.0"
      sources."colorspace-1.1.2"
      sources."combined-stream-1.0.8"
      sources."content-disposition-0.5.3"
      sources."content-type-1.0.4"
      sources."cookie-0.4.1"
      sources."cookie-signature-1.0.6"
      sources."core-util-is-1.0.2"
      sources."dashdash-1.14.1"
      sources."debug-4.3.0"
      sources."delayed-stream-1.0.0"
      sources."depd-1.1.2"
      sources."destroy-1.0.4"
      sources."dom-serializer-1.1.0"
      sources."domelementtype-2.0.2"
      sources."domhandler-3.3.0"
      sources."domutils-2.4.2"
      sources."ecc-jsbn-0.1.2"
      sources."ee-first-1.1.1"
      sources."enabled-2.0.0"
      sources."encodeurl-1.0.2"
      sources."entities-2.1.0"
      sources."escape-html-1.0.3"
      sources."escape-string-regexp-2.0.0"
      sources."esprima-4.0.1"
      sources."etag-1.8.1"
      sources."eventemitter3-4.0.7"
      (sources."express-4.17.1" // {
        dependencies = [
          sources."cookie-0.4.0"
          sources."debug-2.6.9"
          sources."ms-2.0.0"
        ];
      })
      sources."extend-2.0.2"
      sources."extsprintf-1.3.0"
      sources."fast-deep-equal-3.1.3"
      sources."fast-json-stable-stringify-2.1.0"
      sources."fast-safe-stringify-2.0.7"
      sources."fecha-4.2.0"
      sources."file-stream-rotator-0.5.7"
      (sources."finalhandler-1.1.2" // {
        dependencies = [
          sources."debug-2.6.9"
          sources."ms-2.0.0"
        ];
      })
      sources."fn.name-1.1.0"
      sources."forever-agent-0.6.1"
      sources."form-data-2.3.3"
      sources."forwarded-0.1.2"
      sources."fresh-0.5.2"
      sources."generate-function-2.3.1"
      sources."generate-object-property-1.2.0"
      sources."getpass-0.1.7"
      sources."glob-to-regexp-0.4.1"
      sources."graceful-fs-4.2.4"
      sources."har-schema-2.0.0"
      sources."har-validator-5.1.5"
      sources."has-flag-4.0.0"
      sources."hash.js-1.1.7"
      sources."he-1.2.0"
      sources."htmlencode-0.0.4"
      sources."htmlparser2-4.1.0"
      sources."http-errors-1.7.2"
      sources."http-signature-1.2.0"
      sources."https-proxy-agent-5.0.0"
      sources."iconv-2.3.5"
      sources."iconv-lite-0.4.24"
      sources."immediate-3.0.6"
      sources."inherits-2.0.3"
      sources."ipaddr.js-1.9.1"
      sources."irc-git://github.com/matrix-org/node-irc#9028c2197c216dd8e6fc2cb3cc07ce2d6bf741a7"
      sources."irc-colors-1.5.0"
      sources."is-arrayish-0.3.2"
      sources."is-my-ip-valid-1.0.0"
      sources."is-my-json-valid-2.20.5"
      sources."is-promise-2.2.2"
      sources."is-property-1.0.2"
      sources."is-stream-2.0.0"
      sources."is-typedarray-1.0.0"
      sources."isarray-1.0.0"
      sources."isstream-0.1.2"
      sources."js-yaml-3.14.0"
      sources."jsbn-0.1.1"
      sources."json-schema-0.2.3"
      sources."json-schema-traverse-0.4.1"
      sources."json-stringify-safe-5.0.1"
      sources."jsonpointer-4.1.0"
      sources."jsprim-1.4.1"
      sources."kuler-2.0.0"
      sources."lie-3.1.1"
      sources."localforage-1.9.0"
      sources."lodash-4.17.20"
      sources."logform-2.2.0"
      sources."loglevel-1.7.0"
      sources."lowdb-1.0.0"
      sources."lru-cache-5.1.1"
      sources."lru_map-0.3.3"
      sources."matrix-appservice-0.6.0"
      (sources."matrix-appservice-bridge-2.3.1" // {
        dependencies = [
          sources."extend-3.0.2"
          sources."matrix-appservice-0.7.1"
          sources."nopt-4.0.3"
        ];
      })
      (sources."matrix-bot-sdk-0.4.0" // {
        dependencies = [
          sources."chalk-3.0.0"
        ];
      })
      (sources."matrix-js-sdk-8.5.0" // {
        dependencies = [
          sources."qs-6.9.4"
        ];
      })
      sources."matrix-lastactive-0.1.5"
      sources."media-typer-0.3.0"
      sources."merge-descriptors-1.0.1"
      sources."methods-1.1.2"
      sources."mime-1.6.0"
      sources."mime-db-1.44.0"
      sources."mime-types-2.1.27"
      sources."minimalistic-assert-1.0.1"
      sources."minimist-1.2.5"
      sources."mkdirp-0.5.5"
      sources."moment-2.29.1"
      (sources."morgan-1.10.0" // {
        dependencies = [
          sources."debug-2.6.9"
          sources."depd-2.0.0"
          sources."ms-2.0.0"
        ];
      })
      sources."ms-2.1.2"
      sources."nan-2.14.2"
      sources."nedb-1.8.0"
      sources."negotiator-0.6.2"
      sources."node-gyp-build-4.2.3"
      sources."nopt-3.0.6"
      sources."oauth-sign-0.9.0"
      sources."object-hash-2.0.3"
      sources."on-finished-2.3.0"
      sources."on-headers-1.0.2"
      sources."one-time-1.0.0"
      sources."optimist-0.3.7"
      sources."os-homedir-1.0.2"
      sources."os-tmpdir-1.0.2"
      sources."osenv-0.1.5"
      sources."p-finally-1.0.0"
      sources."p-queue-6.6.2"
      sources."p-timeout-3.2.0"
      sources."packet-reader-1.0.0"
      sources."parse-srcset-1.0.2"
      sources."parseurl-1.3.3"
      sources."path-to-regexp-0.1.7"
      sources."performance-now-2.1.0"
      sources."pg-8.5.1"
      sources."pg-connection-string-2.4.0"
      sources."pg-int8-1.0.1"
      sources."pg-pool-3.2.2"
      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."ansi-styles-3.2.1"
          (sources."chalk-2.4.2" // {
            dependencies = [
              sources."supports-color-5.5.0"
            ];
          })
          sources."color-convert-1.9.3"
          sources."color-name-1.1.3"
          sources."escape-string-regexp-1.0.5"
          sources."has-flag-3.0.0"
          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."process-nextick-args-2.0.1"
      sources."prom-client-12.0.0"
      sources."proxy-addr-2.0.6"
      sources."psl-1.8.0"
      sources."punycode-2.1.1"
      sources."qs-6.7.0"
      sources."quick-lru-4.0.1"
      sources."range-parser-1.2.1"
      sources."raw-body-2.4.0"
      sources."readable-stream-3.6.0"
      sources."rebuild-0.1.2"
      sources."regenerator-runtime-0.13.7"
      (sources."request-2.88.2" // {
        dependencies = [
          sources."extend-3.0.2"
          sources."qs-6.5.2"
        ];
      })
      sources."request-promise-4.2.6"
      sources."request-promise-core-1.1.4"
      sources."request-promise-native-1.0.9"
      sources."safe-buffer-5.1.2"
      sources."safer-buffer-2.1.2"
      sources."sanitize-html-1.27.5"
      (sources."send-0.17.1" // {
        dependencies = [
          (sources."debug-2.6.9" // {
            dependencies = [
              sources."ms-2.0.0"
            ];
          })
          sources."ms-2.1.1"
        ];
      })
      sources."serve-static-1.14.1"
      sources."setprototypeof-1.1.1"
      sources."simple-swizzle-0.2.2"
      sources."source-map-0.6.1"
      sources."split2-3.2.2"
      sources."sprintf-js-1.0.3"
      sources."sshpk-1.16.1"
      sources."stack-trace-0.0.10"
      sources."statuses-1.5.0"
      sources."stealthy-require-1.1.1"
      sources."steno-0.4.4"
      (sources."string_decoder-1.3.0" // {
        dependencies = [
          sources."safe-buffer-5.2.1"
        ];
      })
      sources."supports-color-7.2.0"
      sources."tdigest-0.1.1"
      sources."text-hex-1.0.0"
      sources."toidentifier-1.0.0"
      sources."tough-cookie-2.5.0"
      sources."triple-beam-1.3.0"
      sources."tslib-1.14.1"
      sources."tunnel-agent-0.6.0"
      sources."tweetnacl-0.14.5"
      sources."type-is-1.6.18"
      sources."underscore-1.4.4"
      sources."unhomoglyph-1.0.6"
      sources."unpipe-1.0.0"
      sources."uri-js-4.4.0"
      sources."utf-8-validate-5.0.3"
      sources."util-deprecate-1.0.2"
      sources."utils-merge-1.0.1"
      sources."uuid-3.4.0"
      sources."vary-1.1.2"
      sources."verror-1.10.0"
      (sources."winston-3.3.3" // {
        dependencies = [
          sources."async-3.2.0"
        ];
      })
      sources."winston-daily-rotate-file-4.5.0"
      (sources."winston-transport-4.4.0" // {
        dependencies = [
          sources."readable-stream-2.3.7"
          sources."string_decoder-1.1.1"
        ];
      })
      sources."wordwrap-0.0.3"
      sources."xtend-4.0.2"
      sources."yallist-3.1.1"
    ];
    buildInputs = globalBuildInputs;
    meta = {
      description = "An IRC Bridge for Matrix";
      homepage = "https://github.com/matrix-org/matrix-appservice-irc#readme";
      license = "Apache-2.0";
    };
    production = true;
    bypassCache = true;
    reconstructLock = true;
  };
}
\ No newline at end of file

A pkgs/servers/matrix-synapse/matrix-appservice-irc/package.json => pkgs/servers/matrix-synapse/matrix-appservice-irc/package.json +1 -0
@@ 0,0 1,1 @@
[{ "matrix-appservice-irc": "0.22.0" }]