From d1b2374fc99c34e9eb7d57696ae5208e9c37de74 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Fri, 19 Apr 2024 05:55:26 +1200 Subject: [PATCH 01/68] test: clean up image snapshots (#923) This is sort of a rebase of #902 but I decided to do a new PR because #898 updated `go-snaps` and #904 sorted (literally) `npmrc_test.snap` so the only thing left is to remove the old snapshots which is just in `image_test.snap` Closes #902 --- internal/image/__snapshots__/image_test.snap | 429 ++----------------- 1 file changed, 24 insertions(+), 405 deletions(-) diff --git a/internal/image/__snapshots__/image_test.snap b/internal/image/__snapshots__/image_test.snap index 35a072e1f7b..8e58652dee7 100755 --- a/internal/image/__snapshots__/image_test.snap +++ b/internal/image/__snapshots__/image_test.snap @@ -1,5 +1,5 @@ -[TestScanImage/Alpine_3.10_scan - 1] +[TestScanImage/Alpine_3.10_image_tar_with_3.18_version_file - 1] { "Lockfiles": [ { @@ -10,261 +10,104 @@ "name": "alpine-baselayout", "version": "3.1.2-r0", "commit": "770d8ce7c6c556d952884ad436dd82b17ceb1a9a", - "ecosystem": "Alpine:3.10", + "ecosystem": "Alpine:v3.18", "compareAs": "Alpine" }, { "name": "alpine-keys", "version": "2.1-r2", "commit": "bdc861e495d33e961b7b9884324bea64a16d2b91", - "ecosystem": "Alpine:3.10", + "ecosystem": "Alpine:v3.18", "compareAs": "Alpine" }, { "name": "apk-tools", "version": "2.10.6-r0", "commit": "ee458ccae264321745e9622c759baf110130eb2f", - "ecosystem": "Alpine:3.10", + "ecosystem": "Alpine:v3.18", "compareAs": "Alpine" }, { "name": "busybox", "version": "1.30.1-r5", "commit": "26527b0535f65a4ac0ae7f3c9afb2294885b21cc", - "ecosystem": "Alpine:3.10", + "ecosystem": "Alpine:v3.18", "compareAs": "Alpine" }, { "name": "ca-certificates-cacert", "version": "20191127-r2", "commit": "9677580919b73ca6eff94d3d31b9a846b4e40612", - "ecosystem": "Alpine:3.10", + "ecosystem": "Alpine:v3.18", "compareAs": "Alpine" }, { "name": "libc-utils", "version": "0.7.1-r0", "commit": "cdca45021830765ad71e58af7ed31f42d1d3d644", - "ecosystem": "Alpine:3.10", + "ecosystem": "Alpine:v3.18", "compareAs": "Alpine" }, { "name": "libcrypto1.1", "version": "1.1.1k-r0", "commit": "b5417b32170f2c945de1735ea728199291ff97b6", - "ecosystem": "Alpine:3.10", + "ecosystem": "Alpine:v3.18", "compareAs": "Alpine" }, { "name": "libssl1.1", "version": "1.1.1k-r0", "commit": "b5417b32170f2c945de1735ea728199291ff97b6", - "ecosystem": "Alpine:3.10", + "ecosystem": "Alpine:v3.18", "compareAs": "Alpine" }, { "name": "libtls-standalone", "version": "2.9.1-r0", "commit": "981bf8f8fb3cbbc210ee4f2a2fb5b55d0132e02a", - "ecosystem": "Alpine:3.10", + "ecosystem": "Alpine:v3.18", "compareAs": "Alpine" }, { "name": "musl", "version": "1.1.22-r4", "commit": "5c22bb085e8e49c9cb402315efad998f7f992dff", - "ecosystem": "Alpine:3.10", + "ecosystem": "Alpine:v3.18", "compareAs": "Alpine" }, { "name": "musl-utils", "version": "1.1.22-r4", "commit": "5c22bb085e8e49c9cb402315efad998f7f992dff", - "ecosystem": "Alpine:3.10", + "ecosystem": "Alpine:v3.18", "compareAs": "Alpine" }, { "name": "scanelf", "version": "1.2.3-r0", "commit": "7768569c07c52f01b11e62e523cd6ddcb4690889", - "ecosystem": "Alpine:3.10", + "ecosystem": "Alpine:v3.18", "compareAs": "Alpine" }, { "name": "ssl_client", "version": "1.30.1-r5", "commit": "26527b0535f65a4ac0ae7f3c9afb2294885b21cc", - "ecosystem": "Alpine:3.10", + "ecosystem": "Alpine:v3.18", "compareAs": "Alpine" }, { "name": "zlib", "version": "1.2.11-r1", "commit": "d2bfb22c8e8f67ad7d8d02704f35ec4d2a19f9b9", - "ecosystem": "Alpine:3.10", - "compareAs": "Alpine" - } - ] - } - ], - "ImagePath": "fixtures/alpine-tester.tar" -} ---- - -[TestScanImage/node_modules_scan - 1] -{ - "Lockfiles": [ - { - "filePath": "/lib/apk/db/installed", - "parsedAs": "apk-installed", - "packages": [ - { - "name": "alpine-baselayout", - "version": "3.4.3-r2", - "commit": "7749273fed55f6e1df7c9ee6a127f18099f98a94", - "ecosystem": "Alpine", - "compareAs": "Alpine" - }, - { - "name": "alpine-baselayout-data", - "version": "3.4.3-r2", - "commit": "7749273fed55f6e1df7c9ee6a127f18099f98a94", - "ecosystem": "Alpine", - "compareAs": "Alpine" - }, - { - "name": "alpine-keys", - "version": "2.4-r1", - "commit": "aab68f8c9ab434a46710de8e12fb3206e2930a59", - "ecosystem": "Alpine", - "compareAs": "Alpine" - }, - { - "name": "apk-tools", - "version": "2.14.0-r5", - "commit": "33283848034c9885d984c8e8697c645c57324938", - "ecosystem": "Alpine", - "compareAs": "Alpine" - }, - { - "name": "busybox", - "version": "1.36.1-r15", - "commit": "d1b6f274f29076967826e0ecf6ebcaa5d360272f", - "ecosystem": "Alpine", - "compareAs": "Alpine" - }, - { - "name": "busybox-binsh", - "version": "1.36.1-r15", - "commit": "d1b6f274f29076967826e0ecf6ebcaa5d360272f", - "ecosystem": "Alpine", - "compareAs": "Alpine" - }, - { - "name": "ca-certificates-bundle", - "version": "20230506-r0", - "commit": "59534a02716a92a10d177a118c34066162eff4a6", - "ecosystem": "Alpine", - "compareAs": "Alpine" - }, - { - "name": "libc-utils", - "version": "0.7.2-r5", - "commit": "988f183cc9d6699930c3e18ccf4a9e36010afb56", - "ecosystem": "Alpine", - "compareAs": "Alpine" - }, - { - "name": "libcrypto3", - "version": "3.1.4-r5", - "commit": "b784a22cad0c452586b438cb7a597d846fc09ff4", - "ecosystem": "Alpine", - "compareAs": "Alpine" - }, - { - "name": "libgcc", - "version": "13.2.1_git20231014-r0", - "commit": "090e168783a86e5c2ba31fc65921b9715bac62ff", - "ecosystem": "Alpine", - "compareAs": "Alpine" - }, - { - "name": "libssl3", - "version": "3.1.4-r5", - "commit": "b784a22cad0c452586b438cb7a597d846fc09ff4", - "ecosystem": "Alpine", - "compareAs": "Alpine" - }, - { - "name": "libstdc++", - "version": "13.2.1_git20231014-r0", - "commit": "090e168783a86e5c2ba31fc65921b9715bac62ff", - "ecosystem": "Alpine", - "compareAs": "Alpine" - }, - { - "name": "musl", - "version": "1.2.4_git20230717-r4", - "commit": "ca7f2ab5e88794e4e654b40776f8a92256f50639", - "ecosystem": "Alpine", - "compareAs": "Alpine" - }, - { - "name": "musl-utils", - "version": "1.2.4_git20230717-r4", - "commit": "ca7f2ab5e88794e4e654b40776f8a92256f50639", - "ecosystem": "Alpine", - "compareAs": "Alpine" - }, - { - "name": "scanelf", - "version": "1.3.7-r2", - "commit": "e65a4f2d0470e70d862ef2b5c412ecf2cb9ad0a6", - "ecosystem": "Alpine", - "compareAs": "Alpine" - }, - { - "name": "ssl_client", - "version": "1.36.1-r15", - "commit": "d1b6f274f29076967826e0ecf6ebcaa5d360272f", - "ecosystem": "Alpine", - "compareAs": "Alpine" - }, - { - "name": "zlib", - "version": "1.3.1-r0", - "commit": "9406f6fc5fca057d990eb0d260d75839eeb34d83", - "ecosystem": "Alpine", + "ecosystem": "Alpine:v3.18", "compareAs": "Alpine" } ] - }, - { - "filePath": "/usr/app/node_modules/.package-lock.json", - "parsedAs": "node_modules", - "packages": [ - { - "name": "cryo", - "version": "0.0.6", - "ecosystem": "npm", - "compareAs": "npm" - }, - { - "name": "minimist", - "version": "0.0.8", - "ecosystem": "npm", - "compareAs": "npm" - }, - { - "name": "mkdirp", - "version": "0.5.0", - "ecosystem": "npm", - "compareAs": "npm" - } - ] } ], - "ImagePath": "fixtures/test-node_modules.tar" + "ImagePath": "fixtures/test-alpine.tar" } --- @@ -558,7 +401,7 @@ } --- -[TestScanImage/scanning_node_modules_using_yarn_with_no_packages - 1] +[TestScanImage/scanning_node_modules_using_pnpm_with_no_packages - 1] { "Lockfiles": [ { @@ -687,11 +530,11 @@ ] } ], - "ImagePath": "fixtures/test-node_modules-yarn-empty.tar" + "ImagePath": "fixtures/test-node_modules-pnpm-empty.tar" } --- -[TestScanImage/scanning_node_modules_using_yarn_with_some_packages - 1] +[TestScanImage/scanning_node_modules_using_pnpm_with_some_packages - 1] { "Lockfiles": [ { @@ -820,11 +663,11 @@ ] } ], - "ImagePath": "fixtures/test-node_modules-yarn-full.tar" + "ImagePath": "fixtures/test-node_modules-pnpm-full.tar" } --- -[TestScanImage/scanning_node_modules_using_pnpm_with_no_packages - 1] +[TestScanImage/scanning_node_modules_using_yarn_with_no_packages - 1] { "Lockfiles": [ { @@ -953,11 +796,11 @@ ] } ], - "ImagePath": "fixtures/test-node_modules-pnpm-empty.tar" + "ImagePath": "fixtures/test-node_modules-yarn-empty.tar" } --- -[TestScanImage/scanning_node_modules_using_pnpm_with_some_packages - 1] +[TestScanImage/scanning_node_modules_using_yarn_with_some_packages - 1] { "Lockfiles": [ { @@ -1086,230 +929,6 @@ ] } ], - "ImagePath": "fixtures/test-node_modules-pnpm-full.tar" -} ---- - -[TestScanImage/Alpine_3.10_image_tar_with_3.19_version_file - 1] -{ - "Lockfiles": [ - { - "filePath": "/lib/apk/db/installed", - "parsedAs": "apk-installed", - "packages": [ - { - "name": "alpine-baselayout", - "version": "3.1.2-r0", - "commit": "770d8ce7c6c556d952884ad436dd82b17ceb1a9a", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "alpine-keys", - "version": "2.1-r2", - "commit": "bdc861e495d33e961b7b9884324bea64a16d2b91", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "apk-tools", - "version": "2.10.6-r0", - "commit": "ee458ccae264321745e9622c759baf110130eb2f", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "busybox", - "version": "1.30.1-r5", - "commit": "26527b0535f65a4ac0ae7f3c9afb2294885b21cc", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "ca-certificates-cacert", - "version": "20191127-r2", - "commit": "9677580919b73ca6eff94d3d31b9a846b4e40612", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "libc-utils", - "version": "0.7.1-r0", - "commit": "cdca45021830765ad71e58af7ed31f42d1d3d644", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "libcrypto1.1", - "version": "1.1.1k-r0", - "commit": "b5417b32170f2c945de1735ea728199291ff97b6", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "libssl1.1", - "version": "1.1.1k-r0", - "commit": "b5417b32170f2c945de1735ea728199291ff97b6", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "libtls-standalone", - "version": "2.9.1-r0", - "commit": "981bf8f8fb3cbbc210ee4f2a2fb5b55d0132e02a", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "musl", - "version": "1.1.22-r4", - "commit": "5c22bb085e8e49c9cb402315efad998f7f992dff", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "musl-utils", - "version": "1.1.22-r4", - "commit": "5c22bb085e8e49c9cb402315efad998f7f992dff", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "scanelf", - "version": "1.2.3-r0", - "commit": "7768569c07c52f01b11e62e523cd6ddcb4690889", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "ssl_client", - "version": "1.30.1-r5", - "commit": "26527b0535f65a4ac0ae7f3c9afb2294885b21cc", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "zlib", - "version": "1.2.11-r1", - "commit": "d2bfb22c8e8f67ad7d8d02704f35ec4d2a19f9b9", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - } - ] - } - ], - "ImagePath": "fixtures/test-alpine.tar" -} ---- - -[TestScanImage/Alpine_3.10_image_tar_with_3.18_version_file - 1] -{ - "Lockfiles": [ - { - "filePath": "/lib/apk/db/installed", - "parsedAs": "apk-installed", - "packages": [ - { - "name": "alpine-baselayout", - "version": "3.1.2-r0", - "commit": "770d8ce7c6c556d952884ad436dd82b17ceb1a9a", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "alpine-keys", - "version": "2.1-r2", - "commit": "bdc861e495d33e961b7b9884324bea64a16d2b91", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "apk-tools", - "version": "2.10.6-r0", - "commit": "ee458ccae264321745e9622c759baf110130eb2f", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "busybox", - "version": "1.30.1-r5", - "commit": "26527b0535f65a4ac0ae7f3c9afb2294885b21cc", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "ca-certificates-cacert", - "version": "20191127-r2", - "commit": "9677580919b73ca6eff94d3d31b9a846b4e40612", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "libc-utils", - "version": "0.7.1-r0", - "commit": "cdca45021830765ad71e58af7ed31f42d1d3d644", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "libcrypto1.1", - "version": "1.1.1k-r0", - "commit": "b5417b32170f2c945de1735ea728199291ff97b6", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "libssl1.1", - "version": "1.1.1k-r0", - "commit": "b5417b32170f2c945de1735ea728199291ff97b6", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "libtls-standalone", - "version": "2.9.1-r0", - "commit": "981bf8f8fb3cbbc210ee4f2a2fb5b55d0132e02a", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "musl", - "version": "1.1.22-r4", - "commit": "5c22bb085e8e49c9cb402315efad998f7f992dff", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "musl-utils", - "version": "1.1.22-r4", - "commit": "5c22bb085e8e49c9cb402315efad998f7f992dff", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "scanelf", - "version": "1.2.3-r0", - "commit": "7768569c07c52f01b11e62e523cd6ddcb4690889", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "ssl_client", - "version": "1.30.1-r5", - "commit": "26527b0535f65a4ac0ae7f3c9afb2294885b21cc", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - }, - { - "name": "zlib", - "version": "1.2.11-r1", - "commit": "d2bfb22c8e8f67ad7d8d02704f35ec4d2a19f9b9", - "ecosystem": "Alpine:v3.18", - "compareAs": "Alpine" - } - ] - } - ], - "ImagePath": "fixtures/test-alpine.tar" + "ImagePath": "fixtures/test-node_modules-yarn-full.tar" } --- From 5979bb68aad40c6e7d30b6e92eb9af1095782959 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Fri, 19 Apr 2024 06:03:56 +1200 Subject: [PATCH 02/68] ci: ensure snapshots are always cleaned up (#903) While doing #902 I realised we've got a couple of packages using snapshots but not cleaning them up afterwards - this adds a basic script to check for that, based on the existence of the `__snapshots__` directory. Here's what the annotations look like: image Note that because annotations are only shown for _files_, we annotate the first test file in a directory that doesn't contain `testmain_test.go` to ensure it is visible. --- .github/workflows/checks.yml | 10 ++++++ scripts/report_uncleaned_snapshots.py | 51 +++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100755 scripts/report_uncleaned_snapshots.py diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 76e35d9bdfc..55bf93119ea 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -28,6 +28,16 @@ on: permissions: {} jobs: + ensure_snapshots_are_being_cleaned: + permissions: + contents: read # to fetch code (actions/checkout) + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + persist-credentials: false + - run: scripts/report_uncleaned_snapshots.py format: permissions: contents: read # to fetch code (actions/checkout) diff --git a/scripts/report_uncleaned_snapshots.py b/scripts/report_uncleaned_snapshots.py new file mode 100755 index 00000000000..08eed3ed4b2 --- /dev/null +++ b/scripts/report_uncleaned_snapshots.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python + +import os +import glob + + +def annotate_file(file, msg): + if os.getenv("CI") is not None: + print(f"::error file={file} msg={msg}") + + +def does_clean_snapshots(pkg_dir): + try: + with open(f"{pkg_dir}/testmain_test.go", 'r') as file: + for _, line in enumerate(file): + if " testutility.CleanSnapshots(m)" in line: + return True + return False + except FileNotFoundError: + return False + + +def report_lack_of_snapshot_cleaning(directory): + if os.path.exists(f"{directory}/testmain_test.go"): + file = f"{directory}/testmain_test.go" + + annotate_file(file, "Make sure that `TestMain` is calling `testutility.CleanSnapshots(m)` after the tests have been run") + print(f"{file} is not calling `testutility.CleanSnapshots(m)`") + else: + file = list(glob.iglob(os.path.join(directory, "*_test.go")))[0] + + annotate_file(file, "Please add a `testmain_test.go` file with a `TestMain` function that calls `testutility.CleanSnapshots(m)` after the tests have been run") + print(f"{directory} does not have a `testmain_test.go` file with a `TestMain` function that calls `testutility.CleanSnapshots(m)` after the tests have been run") + pass + + +uncleaned_snapshots = False +for snapshot_dir in glob.iglob("**/__snapshots__/", recursive=True): + parent_dir = os.path.dirname(snapshot_dir[:-1]) + + if does_clean_snapshots(parent_dir): + continue + + report_lack_of_snapshot_cleaning(parent_dir) + uncleaned_snapshots = True + +if uncleaned_snapshots: + print("") + print("one or more packages are using snapshots but not ensuring they're cleaned up") + print("make sure these packages have a testmain_test.go file that defines a TestMain function that calls testutility.CleanSnapshots(m)") + exit(1) From d571f9f70fc964257eb654e960186c83760226c6 Mon Sep 17 00:00:00 2001 From: Michael Kedar Date: Thu, 18 Apr 2024 11:12:31 -0700 Subject: [PATCH 03/68] GR: Use deps.dev schema for graph definition in tests (#911) Use the newly public deps.dev schema submodule to make defining the expected graph for the lockfile parsing test easier to reason about. --- internal/resolution/lockfile/npm_test.go | 106 ++++++++--------------- 1 file changed, 36 insertions(+), 70 deletions(-) diff --git a/internal/resolution/lockfile/npm_test.go b/internal/resolution/lockfile/npm_test.go index 29eca0bde0a..b1e34f25b49 100644 --- a/internal/resolution/lockfile/npm_test.go +++ b/internal/resolution/lockfile/npm_test.go @@ -7,25 +7,13 @@ import ( "testing" "deps.dev/util/resolve" - "deps.dev/util/resolve/dep" + "deps.dev/util/resolve/schema" "github.com/google/go-cmp/cmp" "github.com/google/osv-scanner/internal/resolution/lockfile" "github.com/google/osv-scanner/internal/testutility" lf "github.com/google/osv-scanner/pkg/lockfile" ) -func npmVK(t *testing.T, name, version string) resolve.VersionKey { - t.Helper() - return resolve.VersionKey{ - PackageKey: resolve.PackageKey{ - System: resolve.NPM, - Name: name, - }, - Version: version, - VersionType: resolve.Concrete, - } -} - func TestNpmReadV2(t *testing.T) { t.Parallel() @@ -47,37 +35,26 @@ func TestNpmReadV2(t *testing.T) { t.Fatalf("failed canonicalizing got graph: %v", err) } - want := new(resolve.Graph) - //nolint:errcheck // AddEdge only errors if the nodes do not exist - { - root := want.AddNode(npmVK(t, "r", "1.0.0")) - workspace := want.AddNode(npmVK(t, "w", "1.0.0")) - a1 := want.AddNode(npmVK(t, "@fake-registry/a", "1.2.3")) - a2 := want.AddNode(npmVK(t, "@fake-registry/a", "2.3.4")) - a2A := want.AddNode(npmVK(t, "@fake-registry/a", "2.3.4")) - b1 := want.AddNode(npmVK(t, "@fake-registry/b", "1.0.1")) - b2 := want.AddNode(npmVK(t, "@fake-registry/b", "2.0.0")) - b2A := want.AddNode(npmVK(t, "@fake-registry/b", "2.0.0")) - c := want.AddNode(npmVK(t, "@fake-registry/c", "1.1.1")) - d := want.AddNode(npmVK(t, "@fake-registry/d", "2.2.2")) - - want.AddEdge(root, a1, "^1.2.3", dep.NewType()) - want.AddEdge(root, b1, "^1.0.1", dep.NewType()) - - aliasType := dep.NewType(dep.Dev) - aliasType.AddAttr(dep.KnownAs, "a-dev") - want.AddEdge(root, a2A, "^2.3.4", aliasType) - - want.AddEdge(root, workspace, "*", dep.NewType()) - want.AddEdge(a1, b1, "^1.0.0", dep.NewType(dep.Opt)) - want.AddEdge(a2A, b2A, "^2.0.0", dep.NewType()) - want.AddEdge(workspace, a2, "^2.3.4", dep.NewType(dep.Dev)) - want.AddEdge(a2, b2, "^2.0.0", dep.NewType()) - want.AddEdge(b2, c, "^1.0.0", dep.NewType()) - want.AddEdge(b2A, c, "^1.0.0", dep.NewType()) - want.AddEdge(b2, d, "^2.0.0", dep.NewType()) - want.AddEdge(b2A, d, "^2.0.0", dep.NewType()) - want.AddEdge(c, d, "^2.0.0", dep.NewType(dep.Opt)) // peerDependency becomes optional + want, err := schema.ParseResolve(` +r 1.0.0 + @fake-registry/a@^1.2.3 1.2.3 + Opt|$b@^1.0.0 + b: @fake-registry/b@^1.0.1 1.0.1 + Dev KnownAs a-dev|@fake-registry/a@^2.3.4 2.3.4 + @fake-registry/b@^2.0.0 2.0.0 + c: @fake-registry/c@^1.0.0 1.1.1 + # peerDependency becomes optional + Opt|$d@^2.0.0 + d: @fake-registry/d@^2.0.0 2.2.2 + # workspace + w@* 1.0.0 + Dev|@fake-registry/a@^2.3.4 2.3.4 + @fake-registry/b@^2.0.0 2.0.0 + $c@^1.0.0 + $d@^2.0.0 +`, resolve.NPM) + if err != nil { + t.Fatalf("error parsing want graph: %v", err) } if err := want.Canon(); err != nil { @@ -110,32 +87,21 @@ func TestNpmReadV1(t *testing.T) { t.Fatalf("failed canonicalizing got graph: %v", err) } - want := new(resolve.Graph) - //nolint:errcheck // AddEdge only errors if the nodes do not exist - { - root := want.AddNode(npmVK(t, "r", "1.0.0")) - a1 := want.AddNode(npmVK(t, "@fake-registry/a", "1.2.3")) - a2 := want.AddNode(npmVK(t, "@fake-registry/a", "2.3.4")) - b1 := want.AddNode(npmVK(t, "@fake-registry/b", "1.0.1")) - b2 := want.AddNode(npmVK(t, "@fake-registry/b", "2.0.0")) - c := want.AddNode(npmVK(t, "@fake-registry/c", "1.1.1")) - d := want.AddNode(npmVK(t, "@fake-registry/d", "2.2.2")) - // v1 does not support workspaces - - want.AddEdge(root, a1, "^1.2.3", dep.NewType()) - want.AddEdge(root, b1, "^1.0.1", dep.NewType()) - - aliasType := dep.NewType(dep.Dev) - aliasType.AddAttr(dep.KnownAs, "a-dev") - want.AddEdge(root, a2, "^2.3.4", aliasType) - - // all indirect dependencies are optional because it's impossible to tell in v1 - optType := dep.NewType(dep.Opt) - want.AddEdge(a1, b1, "^1.0.0", optType) - want.AddEdge(a2, b2, "^2.0.0", optType) - want.AddEdge(b2, c, "^1.0.0", optType) - want.AddEdge(b2, d, "^2.0.0", optType) - // peerDependencies are not in v1 + want, err := schema.ParseResolve(` +r 1.0.0 + @fake-registry/a@^1.2.3 1.2.3 + Opt|$b@^1.0.0 + b: @fake-registry/b@^1.0.1 1.0.1 + Dev KnownAs a-dev|@fake-registry/a@^2.3.4 2.3.4 + # all indirect dependencies become optional because it's impossible to tell in v1 + Opt|@fake-registry/b@^2.0.0 2.0.0 + Opt|@fake-registry/c@^1.0.0 1.1.1 + # peerDependencies are not supported in v1 + Opt|@fake-registry/d@^2.0.0 2.2.2 + # v1 does not support workspaces +`, resolve.NPM) + if err != nil { + t.Fatalf("error parsing want graph: %v", err) } if err := want.Canon(); err != nil { From 032296dfeda9ceef9fc46ffba9d032cc52f3428a Mon Sep 17 00:00:00 2001 From: Rex P <106129829+another-rex@users.noreply.github.com> Date: Fri, 19 Apr 2024 07:52:11 +1000 Subject: [PATCH 04/68] Changelog for v1.7.2 (#932) --- CHANGELOG.md | 10 ++++++++++ cmd/osv-scanner/__snapshots__/main_test.snap | 8 ++++---- internal/output/__snapshots__/sarif_test.snap | 2 +- internal/version/version.go | 2 +- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 380ca4cd43e..a3b90287386 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ +# v1.7.2: + +### Fixes: + +- [Bug #899](https://github.com/google/osv-scanner/issues/899) Guided Remediation: Parse paths in npmrc auth fields correctly. +- [Bug #908](https://github.com/google/osv-scanner/issues/908) Fix rust call analysis by explicitly disabling stripping of debug info. +- [Bug #914](https://github.com/google/osv-scanner/issues/914) Fix regression for go call analysis introduced in 1.7.0. + # v1.7.1: +(There is no Github release for this version) + ### Fixes - [Bug #856](https://github.com/google/osv-scanner/issues/856) diff --git a/cmd/osv-scanner/__snapshots__/main_test.snap b/cmd/osv-scanner/__snapshots__/main_test.snap index f29f7630aa7..0d782ac1835 100755 --- a/cmd/osv-scanner/__snapshots__/main_test.snap +++ b/cmd/osv-scanner/__snapshots__/main_test.snap @@ -9,7 +9,7 @@ No package sources found, --help for usage information. --- [TestRun/#01 - 1] -osv-scanner version: 1.7.1 +osv-scanner version: 1.7.2 commit: n/a built at: n/a @@ -102,7 +102,7 @@ Scanned /fixtures/locks-many/composer.lock file and found 1 package "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.1" + "version": "1.7.2" } }, "results": [] @@ -172,7 +172,7 @@ Loaded filter from: /fixtures/go-project/osv-scanner.toml } } ], - "version": "1.7.1" + "version": "1.7.2" } }, "artifacts": [ @@ -520,7 +520,7 @@ Scanned /fixtures/locks-insecure/osv-scanner-flutter-deps.json file as } } ], - "version": "1.7.1" + "version": "1.7.2" } }, "artifacts": [ diff --git a/internal/output/__snapshots__/sarif_test.snap b/internal/output/__snapshots__/sarif_test.snap index 6e9cc1f2307..2a70e024726 100755 --- a/internal/output/__snapshots__/sarif_test.snap +++ b/internal/output/__snapshots__/sarif_test.snap @@ -62,7 +62,7 @@ } } ], - "version": "1.7.1" + "version": "1.7.2" } }, "artifacts": [ diff --git a/internal/version/version.go b/internal/version/version.go index abc28c08283..4857e8dd537 100644 --- a/internal/version/version.go +++ b/internal/version/version.go @@ -1,4 +1,4 @@ package version // OSVVersion is the current release version, you should update this variable when doing a release -var OSVVersion = "1.7.1" +var OSVVersion = "1.7.2" From d75f136bbfdfd952d770dda15a94e0d9ef6c9a42 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Tue, 23 Apr 2024 15:44:53 +1200 Subject: [PATCH 05/68] test: include groups when describing package details (#933) Ran into this while working on other stuff - currently if two packages are the same except for their groups, the failure message doesn't indicate that which is confusing --- pkg/lockfile/helpers_test.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkg/lockfile/helpers_test.go b/pkg/lockfile/helpers_test.go index bc26b62af7b..9db55de19d3 100644 --- a/pkg/lockfile/helpers_test.go +++ b/pkg/lockfile/helpers_test.go @@ -42,7 +42,13 @@ func packageToString(pkg lockfile.PackageDetails) string { commit = "" } - return fmt.Sprintf("%s@%s (%s, %s)", pkg.Name, pkg.Version, pkg.Ecosystem, commit) + groups := strings.Join(pkg.DepGroups, ", ") + + if groups == "" { + groups = "" + } + + return fmt.Sprintf("%s@%s (%s, %s, %s)", pkg.Name, pkg.Version, pkg.Ecosystem, commit, groups) } func hasPackage(t *testing.T, packages []lockfile.PackageDetails, pkg lockfile.PackageDetails) bool { From aac1ee1f3afb415f913716d7e55ae815b717668c Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Tue, 30 Apr 2024 16:22:01 +1200 Subject: [PATCH 06/68] chore: add missing space to panic message (#942) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I noticed this while working on other stuff 😅 --- pkg/lockfile/extract.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/lockfile/extract.go b/pkg/lockfile/extract.go index e8b1e398080..99a553aaee4 100644 --- a/pkg/lockfile/extract.go +++ b/pkg/lockfile/extract.go @@ -11,7 +11,7 @@ var lockfileExtractors = map[string]Extractor{} func registerExtractor(name string, extractor Extractor) { if _, ok := lockfileExtractors[name]; ok { - panic("an extractor is already registered as" + name) + panic("an extractor is already registered as " + name) } lockfileExtractors[name] = extractor From 282b65c8d6e01dddd4a9450c1002208b0cc9b9aa Mon Sep 17 00:00:00 2001 From: Michael Kedar Date: Tue, 30 Apr 2024 14:56:30 +1000 Subject: [PATCH 07/68] Add new vuln to tests (#947) GHSA-c5pj-mqfh-rvc3 is new --- cmd/osv-scanner/__snapshots__/main_test.snap | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cmd/osv-scanner/__snapshots__/main_test.snap b/cmd/osv-scanner/__snapshots__/main_test.snap index 0d782ac1835..31687e74233 100755 --- a/cmd/osv-scanner/__snapshots__/main_test.snap +++ b/cmd/osv-scanner/__snapshots__/main_test.snap @@ -262,6 +262,7 @@ Scanned /fixtures/sbom-insecure/postgres-stretch.cdx.xml as CycloneDX S | https://osv.dev/GHSA-m8cg-xc2p-r3fc | 2.5 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | | https://osv.dev/GHSA-vpvm-3wq2-2wvm | 7.0 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | | https://osv.dev/GHSA-xr7r-f8xq-vfvv | 8.6 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | +| https://osv.dev/GHSA-c5pj-mqfh-rvc3 | 7.2 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | | https://osv.dev/GHSA-p782-xgp4-8hr8 | 5.3 | Go | golang.org/x/sys | v0.0.0-20210817142637-7d9622a276b7 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | | https://osv.dev/GO-2022-0493 | | | | | | | https://osv.dev/DLA-3012-1 | | Debian | libxml2 | 2.9.4+dfsg1-2.2+deb9u6 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | @@ -996,6 +997,7 @@ Loaded OSS-Fuzz local db from /osv-scanner/OSS-Fuzz/all.zip +-------------------------------------+------+-----------+--------------------------------+------------------------------------+-------------------------------------------------+ | OSV URL | CVSS | ECOSYSTEM | PACKAGE | VERSION | SOURCE | +-------------------------------------+------+-----------+--------------------------------+------------------------------------+-------------------------------------------------+ +| https://osv.dev/GHSA-c5pj-mqfh-rvc3 | 7.2 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | | https://osv.dev/GHSA-f3fp-gc8g-vw66 | 5.9 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | | https://osv.dev/GHSA-g2j6-57v7-gm8c | 6.1 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | | https://osv.dev/GHSA-m8cg-xc2p-r3fc | 2.5 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | @@ -1020,6 +1022,7 @@ Loaded OSS-Fuzz local db from /osv-scanner/OSS-Fuzz/all.zip +-------------------------------------+------+-----------+--------------------------------+------------------------------------+-------------------------------------------------+ | OSV URL | CVSS | ECOSYSTEM | PACKAGE | VERSION | SOURCE | +-------------------------------------+------+-----------+--------------------------------+------------------------------------+-------------------------------------------------+ +| https://osv.dev/GHSA-c5pj-mqfh-rvc3 | 7.2 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | | https://osv.dev/GHSA-f3fp-gc8g-vw66 | 5.9 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | | https://osv.dev/GHSA-g2j6-57v7-gm8c | 6.1 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | | https://osv.dev/GHSA-m8cg-xc2p-r3fc | 2.5 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | From 83efb370ee0548fcac736c91a670fb8cb63ad329 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Wed, 1 May 2024 10:50:28 +1200 Subject: [PATCH 08/68] feat: add support for PNPM v9 lockfiles (#934) This adds support for v9 PNPM lockfiles which has a different structure that looks to be similar to Yarn v2+ lockfiles. I can't find a lot of clear detail on the actual changes so I've started with just a "best effort" approach - most notably this means dev grouping is lost because that detail is not represented in the new format; we could probably successfully determine it by checking in `snapshots` but that would be a lot more work so I'm leaving that as a follow up. The good news is it seems like going forward the lockfile version should match the major verison of PNPM (https://github.com/pnpm/pnpm/pull/7861) which should make it easier to track these, and we can probably drop explicit support for older versions in v2. Resolves #931 --- pkg/lockfile/fixtures/pnpm/commits.v9.yaml | 34 +++ .../fixtures/pnpm/mixed-groups.v53.yaml | 34 +++ .../fixtures/pnpm/mixed-groups.v54.yaml | 34 +++ .../fixtures/pnpm/mixed-groups.v6.yaml | 39 +++ .../fixtures/pnpm/mixed-groups.v9.yaml | 44 +++ .../fixtures/pnpm/multiple-versions.v9.yaml | 38 +++ .../fixtures/pnpm/no-packages.v9.yaml | 7 + .../fixtures/pnpm/one-package-dev.v9.yaml | 24 ++ .../fixtures/pnpm/one-package.v9.yaml | 24 ++ .../pnpm/peer-dependencies-advanced.v9.yaml | 266 +++++++++++++++++ .../fixtures/pnpm/peer-dependencies.v9.yaml | 33 ++ .../fixtures/pnpm/scoped-packages.v9.yaml | 23 ++ pkg/lockfile/parse-pnpm-lock-v9_test.go | 281 ++++++++++++++++++ pkg/lockfile/parse-pnpm-lock.go | 18 +- 14 files changed, 897 insertions(+), 2 deletions(-) create mode 100644 pkg/lockfile/fixtures/pnpm/commits.v9.yaml create mode 100644 pkg/lockfile/fixtures/pnpm/mixed-groups.v53.yaml create mode 100644 pkg/lockfile/fixtures/pnpm/mixed-groups.v54.yaml create mode 100644 pkg/lockfile/fixtures/pnpm/mixed-groups.v6.yaml create mode 100644 pkg/lockfile/fixtures/pnpm/mixed-groups.v9.yaml create mode 100644 pkg/lockfile/fixtures/pnpm/multiple-versions.v9.yaml create mode 100644 pkg/lockfile/fixtures/pnpm/no-packages.v9.yaml create mode 100644 pkg/lockfile/fixtures/pnpm/one-package-dev.v9.yaml create mode 100644 pkg/lockfile/fixtures/pnpm/one-package.v9.yaml create mode 100644 pkg/lockfile/fixtures/pnpm/peer-dependencies-advanced.v9.yaml create mode 100644 pkg/lockfile/fixtures/pnpm/peer-dependencies.v9.yaml create mode 100644 pkg/lockfile/fixtures/pnpm/scoped-packages.v9.yaml create mode 100644 pkg/lockfile/parse-pnpm-lock-v9_test.go diff --git a/pkg/lockfile/fixtures/pnpm/commits.v9.yaml b/pkg/lockfile/fixtures/pnpm/commits.v9.yaml new file mode 100644 index 00000000000..490cec89384 --- /dev/null +++ b/pkg/lockfile/fixtures/pnpm/commits.v9.yaml @@ -0,0 +1,34 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + ansi-regex: + specifier: git@github.com/chalk/ansi-regex.git + version: https://codeload.github.com/chalk/ansi-regex/tar.gz/02fa893d619d3da85411acc8fd4e2eea0e95a9d9 + is-number: + specifier: github:jonschlinkert/is-number#master + version: https://codeload.github.com/jonschlinkert/is-number/tar.gz/98e8ff1da1a89f93d1397a24d7413ed15421c139 + +packages: + + ansi-regex@https://codeload.github.com/chalk/ansi-regex/tar.gz/02fa893d619d3da85411acc8fd4e2eea0e95a9d9: + resolution: {tarball: https://codeload.github.com/chalk/ansi-regex/tar.gz/02fa893d619d3da85411acc8fd4e2eea0e95a9d9} + version: 6.0.1 + engines: {node: '>=12'} + + is-number@https://codeload.github.com/jonschlinkert/is-number/tar.gz/98e8ff1da1a89f93d1397a24d7413ed15421c139: + resolution: {tarball: https://codeload.github.com/jonschlinkert/is-number/tar.gz/98e8ff1da1a89f93d1397a24d7413ed15421c139} + version: 7.0.0 + engines: {node: '>=0.12.0'} + +snapshots: + + ansi-regex@https://codeload.github.com/chalk/ansi-regex/tar.gz/02fa893d619d3da85411acc8fd4e2eea0e95a9d9: {} + + is-number@https://codeload.github.com/jonschlinkert/is-number/tar.gz/98e8ff1da1a89f93d1397a24d7413ed15421c139: {} diff --git a/pkg/lockfile/fixtures/pnpm/mixed-groups.v53.yaml b/pkg/lockfile/fixtures/pnpm/mixed-groups.v53.yaml new file mode 100644 index 00000000000..dac5b94fc53 --- /dev/null +++ b/pkg/lockfile/fixtures/pnpm/mixed-groups.v53.yaml @@ -0,0 +1,34 @@ +lockfileVersion: 5.3 + +specifiers: + ansi-regex: ^5.0.0 + is-number: ^7.0.0 + uuid: ^8.0.0 + +dependencies: + ansi-regex: 5.0.1 + +optionalDependencies: + uuid: 8.3.2 + +devDependencies: + is-number: 7.0.0 + +packages: + + /ansi-regex/5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: false + + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /uuid/8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + requiresBuild: true + dev: false + optional: true diff --git a/pkg/lockfile/fixtures/pnpm/mixed-groups.v54.yaml b/pkg/lockfile/fixtures/pnpm/mixed-groups.v54.yaml new file mode 100644 index 00000000000..a8aefde5801 --- /dev/null +++ b/pkg/lockfile/fixtures/pnpm/mixed-groups.v54.yaml @@ -0,0 +1,34 @@ +lockfileVersion: 5.4 + +specifiers: + ansi-regex: ^5.0.0 + is-number: ^7.0.0 + uuid: ^8.0.0 + +dependencies: + ansi-regex: 5.0.1 + +optionalDependencies: + uuid: 8.3.2 + +devDependencies: + is-number: 7.0.0 + +packages: + + /ansi-regex/5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: false + + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /uuid/8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + requiresBuild: true + dev: false + optional: true diff --git a/pkg/lockfile/fixtures/pnpm/mixed-groups.v6.yaml b/pkg/lockfile/fixtures/pnpm/mixed-groups.v6.yaml new file mode 100644 index 00000000000..3ed99f812f9 --- /dev/null +++ b/pkg/lockfile/fixtures/pnpm/mixed-groups.v6.yaml @@ -0,0 +1,39 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + ansi-regex: + specifier: ^5.0.0 + version: 5.0.0 + +optionalDependencies: + uuid: + specifier: ^8.0.0 + version: 8.0.0 + +devDependencies: + is-number: + specifier: ^7.0.0 + version: 7.0.0 + +packages: + + /ansi-regex@5.0.0: + resolution: {integrity: sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==} + engines: {node: '>=8'} + dev: false + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /uuid@8.0.0: + resolution: {integrity: sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==} + hasBin: true + requiresBuild: true + dev: false + optional: true diff --git a/pkg/lockfile/fixtures/pnpm/mixed-groups.v9.yaml b/pkg/lockfile/fixtures/pnpm/mixed-groups.v9.yaml new file mode 100644 index 00000000000..b291909334f --- /dev/null +++ b/pkg/lockfile/fixtures/pnpm/mixed-groups.v9.yaml @@ -0,0 +1,44 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + ansi-regex: + specifier: ^5.0.0 + version: 5.0.1 + optionalDependencies: + uuid: + specifier: ^8.0.0 + version: 8.3.2 + devDependencies: + is-number: + specifier: ^7.0.0 + version: 7.0.0 + +packages: + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + +snapshots: + + ansi-regex@5.0.1: {} + + is-number@7.0.0: {} + + uuid@8.3.2: + optional: true diff --git a/pkg/lockfile/fixtures/pnpm/multiple-versions.v9.yaml b/pkg/lockfile/fixtures/pnpm/multiple-versions.v9.yaml new file mode 100644 index 00000000000..85f81a9c5cb --- /dev/null +++ b/pkg/lockfile/fixtures/pnpm/multiple-versions.v9.yaml @@ -0,0 +1,38 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + aws-sdk: + specifier: ^2.1087.0 + version: 2.1602.0 + uuid: + specifier: ^8.0.0 + version: 8.3.2 + +packages: + + uuid@8.0.0: + resolution: {integrity: sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==} + hasBin: true + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + +snapshots: + + uuid@8.0.0: {} + + uuid@8.3.2: {} + + xmlbuilder@11.0.1: {} diff --git a/pkg/lockfile/fixtures/pnpm/no-packages.v9.yaml b/pkg/lockfile/fixtures/pnpm/no-packages.v9.yaml new file mode 100644 index 00000000000..338e41acb91 --- /dev/null +++ b/pkg/lockfile/fixtures/pnpm/no-packages.v9.yaml @@ -0,0 +1,7 @@ +lockfileVersion: 5.3 + +specifiers: + +dependencies: + +packages: diff --git a/pkg/lockfile/fixtures/pnpm/one-package-dev.v9.yaml b/pkg/lockfile/fixtures/pnpm/one-package-dev.v9.yaml new file mode 100644 index 00000000000..8b03e62729d --- /dev/null +++ b/pkg/lockfile/fixtures/pnpm/one-package-dev.v9.yaml @@ -0,0 +1,24 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + acorn: + specifier: ^8.11.3 + version: 8.11.3 + +packages: + + acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + +snapshots: + + acorn@8.11.3: {} diff --git a/pkg/lockfile/fixtures/pnpm/one-package.v9.yaml b/pkg/lockfile/fixtures/pnpm/one-package.v9.yaml new file mode 100644 index 00000000000..0332df71b0f --- /dev/null +++ b/pkg/lockfile/fixtures/pnpm/one-package.v9.yaml @@ -0,0 +1,24 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + acorn: + specifier: ^8.11.3 + version: 8.11.3 + +packages: + + acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + +snapshots: + + acorn@8.11.3: {} diff --git a/pkg/lockfile/fixtures/pnpm/peer-dependencies-advanced.v9.yaml b/pkg/lockfile/fixtures/pnpm/peer-dependencies-advanced.v9.yaml new file mode 100644 index 00000000000..3c67a3d2228 --- /dev/null +++ b/pkg/lockfile/fixtures/pnpm/peer-dependencies-advanced.v9.yaml @@ -0,0 +1,266 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@typescript-eslint/eslint-plugin': + specifier: ^5.12.0 + version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5) + '@typescript-eslint/parser': + specifier: ^5.12.0 + version: 5.62.0(eslint@8.57.0)(typescript@4.9.5) + eslint: + specifier: ^8.0.0 + version: 8.57.0 + typescript: + specifier: ^4.0.0 + version: 4.9.5 + +packages: + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/eslint-plugin@5.62.0': + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@5.62.0': + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/type-utils@5.62.0': + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@5.62.0': + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@5.62.0': + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + tsutils@3.21.0: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + + typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + +snapshots: + + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5)': + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5) + debug: 4.3.4 + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare-lite: 1.4.0 + semver: 7.6.0 + tsutils: 3.21.0(typescript@4.9.5) + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5)': + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + debug: 4.3.4 + eslint: 8.57.0 + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@4.9.5)': + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5) + debug: 4.3.4 + eslint: 8.57.0 + tsutils: 3.21.0(typescript@4.9.5) + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5)': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.6.0 + tsutils: 3.21.0(typescript@4.9.5) + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@4.9.5)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + eslint: 8.57.0 + eslint-scope: 5.1.1 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + + debug@4.3.4: + dependencies: + ms: 2.1.2 + + eslint@8.57.0: + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + has-flag@4.0.0: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + tsutils@3.21.0(typescript@4.9.5): + dependencies: + tslib: 1.14.1 + typescript: 4.9.5 + + typescript@4.9.5: {} diff --git a/pkg/lockfile/fixtures/pnpm/peer-dependencies.v9.yaml b/pkg/lockfile/fixtures/pnpm/peer-dependencies.v9.yaml new file mode 100644 index 00000000000..1c744a699e6 --- /dev/null +++ b/pkg/lockfile/fixtures/pnpm/peer-dependencies.v9.yaml @@ -0,0 +1,33 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + acorn-jsx: + specifier: ^5.3.2 + version: 5.3.2(acorn@8.11.3) + +packages: + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + +snapshots: + + acorn-jsx@5.3.2(acorn@8.11.3): + dependencies: + acorn: 8.11.3 + + acorn@8.11.3: {} diff --git a/pkg/lockfile/fixtures/pnpm/scoped-packages.v9.yaml b/pkg/lockfile/fixtures/pnpm/scoped-packages.v9.yaml new file mode 100644 index 00000000000..d6c72a7157f --- /dev/null +++ b/pkg/lockfile/fixtures/pnpm/scoped-packages.v9.yaml @@ -0,0 +1,23 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@typescript-eslint/types': + specifier: ^5.0.0 + version: 5.62.0 + +packages: + + '@typescript-eslint/types@5.62.0': + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + +snapshots: + + '@typescript-eslint/types@5.62.0': {} diff --git a/pkg/lockfile/parse-pnpm-lock-v9_test.go b/pkg/lockfile/parse-pnpm-lock-v9_test.go new file mode 100644 index 00000000000..b0763860b2a --- /dev/null +++ b/pkg/lockfile/parse-pnpm-lock-v9_test.go @@ -0,0 +1,281 @@ +package lockfile_test + +import ( + "testing" + + "github.com/google/osv-scanner/pkg/lockfile" +) + +func TestParsePnpmLock_v9_NoPackages(t *testing.T) { + t.Parallel() + + packages, err := lockfile.ParsePnpmLock("fixtures/pnpm/no-packages.v9.yaml") + + if err != nil { + t.Errorf("Got unexpected error: %v", err) + } + + expectPackages(t, packages, []lockfile.PackageDetails{}) +} + +func TestParsePnpmLock_v9_OnePackage(t *testing.T) { + t.Parallel() + + packages, err := lockfile.ParsePnpmLock("fixtures/pnpm/one-package.v9.yaml") + + if err != nil { + t.Errorf("Got unexpected error: %v", err) + } + + expectPackages(t, packages, []lockfile.PackageDetails{ + { + Name: "acorn", + Version: "8.11.3", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + }) +} + +func TestParsePnpmLock_v9_OnePackageDev(t *testing.T) { + t.Parallel() + + packages, err := lockfile.ParsePnpmLock("fixtures/pnpm/one-package-dev.v9.yaml") + + if err != nil { + t.Errorf("Got unexpected error: %v", err) + } + + expectPackages(t, packages, []lockfile.PackageDetails{ + { + Name: "acorn", + Version: "8.11.3", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + }) +} + +func TestParsePnpmLock_v9_ScopedPackages(t *testing.T) { + t.Parallel() + + packages, err := lockfile.ParsePnpmLock("fixtures/pnpm/scoped-packages.v9.yaml") + + if err != nil { + t.Errorf("Got unexpected error: %v", err) + } + + expectPackages(t, packages, []lockfile.PackageDetails{ + { + Name: "@typescript-eslint/types", + Version: "5.62.0", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + }) +} + +func TestParsePnpmLock_v9_PeerDependencies(t *testing.T) { + t.Parallel() + + packages, err := lockfile.ParsePnpmLock("fixtures/pnpm/peer-dependencies.v9.yaml") + + if err != nil { + t.Errorf("Got unexpected error: %v", err) + } + + expectPackages(t, packages, []lockfile.PackageDetails{ + { + Name: "acorn-jsx", + Version: "5.3.2", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + { + Name: "acorn", + Version: "8.11.3", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + }) +} + +func TestParsePnpmLock_v9_PeerDependenciesAdvanced(t *testing.T) { + t.Parallel() + + packages, err := lockfile.ParsePnpmLock("fixtures/pnpm/peer-dependencies-advanced.v9.yaml") + + if err != nil { + t.Errorf("Got unexpected error: %v", err) + } + + expectPackages(t, packages, []lockfile.PackageDetails{ + { + Name: "@eslint-community/eslint-utils", + Version: "4.4.0", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + { + Name: "@eslint/eslintrc", + Version: "2.1.4", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + { + Name: "@typescript-eslint/eslint-plugin", + Version: "5.62.0", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + { + Name: "@typescript-eslint/parser", + Version: "5.62.0", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + { + Name: "@typescript-eslint/type-utils", + Version: "5.62.0", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + { + Name: "@typescript-eslint/typescript-estree", + Version: "5.62.0", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + { + Name: "@typescript-eslint/utils", + Version: "5.62.0", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + { + Name: "debug", + Version: "4.3.4", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + { + Name: "eslint", + Version: "8.57.0", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + { + Name: "has-flag", + Version: "4.0.0", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + { + Name: "supports-color", + Version: "7.2.0", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + { + Name: "tsutils", + Version: "3.21.0", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + { + Name: "typescript", + Version: "4.9.5", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + }) +} + +func TestParsePnpmLock_v9_MultipleVersions(t *testing.T) { + t.Parallel() + + packages, err := lockfile.ParsePnpmLock("fixtures/pnpm/multiple-versions.v9.yaml") + + if err != nil { + t.Errorf("Got unexpected error: %v", err) + } + + expectPackages(t, packages, []lockfile.PackageDetails{ + { + Name: "uuid", + Version: "8.0.0", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + { + Name: "uuid", + Version: "8.3.2", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + { + Name: "xmlbuilder", + Version: "11.0.1", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + }) +} + +func TestParsePnpmLock_v9_Commits(t *testing.T) { + t.Parallel() + + packages, err := lockfile.ParsePnpmLock("fixtures/pnpm/commits.v9.yaml") + + if err != nil { + t.Errorf("Got unexpected error: %v", err) + } + + expectPackages(t, packages, []lockfile.PackageDetails{ + { + Name: "ansi-regex", + Version: "6.0.1", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + Commit: "02fa893d619d3da85411acc8fd4e2eea0e95a9d9", + }, + { + Name: "is-number", + Version: "7.0.0", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + Commit: "98e8ff1da1a89f93d1397a24d7413ed15421c139", + }, + }) +} + +func TestParsePnpmLock_v9_MixedGroups(t *testing.T) { + t.Parallel() + + packages, err := lockfile.ParsePnpmLock("fixtures/pnpm/mixed-groups.v9.yaml") + + if err != nil { + t.Errorf("Got unexpected error: %v", err) + } + + expectPackages(t, packages, []lockfile.PackageDetails{ + { + Name: "ansi-regex", + Version: "5.0.1", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + { + Name: "uuid", + Version: "8.3.2", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + { + Name: "is-number", + Version: "7.0.0", + Ecosystem: lockfile.PnpmEcosystem, + CompareAs: lockfile.PnpmEcosystem, + }, + }) +} diff --git a/pkg/lockfile/parse-pnpm-lock.go b/pkg/lockfile/parse-pnpm-lock.go index eb062d2d594..245c8dfca21 100644 --- a/pkg/lockfile/parse-pnpm-lock.go +++ b/pkg/lockfile/parse-pnpm-lock.go @@ -65,7 +65,7 @@ func startsWithNumber(str string) bool { // extractPnpmPackageNameAndVersion parses a dependency path, attempting to // extract the name and version of the package it represents -func extractPnpmPackageNameAndVersion(dependencyPath string) (string, string) { +func extractPnpmPackageNameAndVersion(dependencyPath string, lockfileVersion float64) (string, string) { // file dependencies must always have a name property to be installed, // and their dependency path never has the version encoded, so we can // skip trying to extract either from their dependency path @@ -73,6 +73,20 @@ func extractPnpmPackageNameAndVersion(dependencyPath string) (string, string) { return "", "" } + // v9.0 specifies the dependencies as @ rather than as a path + if lockfileVersion == 9.0 { + dependencyPath = strings.Trim(dependencyPath, "'") + dependencyPath, isScoped := strings.CutPrefix(dependencyPath, "@") + + name, version, _ := strings.Cut(dependencyPath, "@") + + if isScoped { + name = "@" + name + } + + return name, version + } + parts := strings.Split(dependencyPath, "/") var name string @@ -124,7 +138,7 @@ func parsePnpmLock(lockfile PnpmLockfile) []PackageDetails { packages := make([]PackageDetails, 0, len(lockfile.Packages)) for s, pkg := range lockfile.Packages { - name, version := extractPnpmPackageNameAndVersion(s) + name, version := extractPnpmPackageNameAndVersion(s, lockfile.Version) // "name" is only present if it's not in the dependency path and takes // priority over whatever name we think we've extracted (if any) From 4a14def265083d4cc2036a15a81d30916f062510 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Wed, 1 May 2024 11:04:26 +1200 Subject: [PATCH 09/68] ci: upgrade Codecov to v4 (#941) This will hopefully resolve the issues we're having with the v3 action, but requires the `CODECOV_TOKEN` secret to be configured per [this document](https://docs.codecov.com/docs/adding-the-codecov-token) which needs to be done by someone with repository permissions to set secrets. --- .github/workflows/checks.yml | 2 ++ .github/workflows/prerelease-check.yml | 2 ++ .github/workflows/test-action/action.yml | 10 +++++++++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 55bf93119ea..f93aa8e7107 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -109,3 +109,5 @@ jobs: check-latest: true - name: Run test action uses: ./.github/workflows/test-action + with: + codecov_token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/prerelease-check.yml b/.github/workflows/prerelease-check.yml index 3b587daa3d4..0c3d7b6d260 100644 --- a/.github/workflows/prerelease-check.yml +++ b/.github/workflows/prerelease-check.yml @@ -102,6 +102,8 @@ jobs: check-latest: true - name: Run test action uses: ./.github/workflows/test-action + with: + codecov_token: ${{ secrets.CODECOV_TOKEN }} release-helper: permissions: contents: read # to fetch code (actions/checkout) diff --git a/.github/workflows/test-action/action.yml b/.github/workflows/test-action/action.yml index c25b24609da..b8165c7daca 100644 --- a/.github/workflows/test-action/action.yml +++ b/.github/workflows/test-action/action.yml @@ -15,6 +15,11 @@ name: test description: "Runs go tests" +inputs: + codecov_token: + description: "Token for uploading coverage reports to Codecov" + required: true + runs: using: composite steps: @@ -24,4 +29,7 @@ runs: TEST_ACCEPTANCE: true run: ./scripts/run_tests.sh - name: Upload coverage to Codecov - uses: codecov/codecov-action@ab904c41d6ece82784817410c45d8b8c02684457 # v3.1.6 + uses: codecov/codecov-action@84508663e988701840491b86de86b666e8a86bed # v4.3.0 + with: + token: ${{ inputs.CODECOV_TOKEN }} + fail_ci_if_error: true From 2b165ea5d42248d2d9b2602b48bc6eb2e2d1ced8 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Wed, 1 May 2024 11:50:46 +1200 Subject: [PATCH 10/68] test: update snapshots due to external vulnerability changes (#951) Looks like this has been withdrawn --- cmd/osv-scanner/__snapshots__/main_test.snap | 3 --- 1 file changed, 3 deletions(-) diff --git a/cmd/osv-scanner/__snapshots__/main_test.snap b/cmd/osv-scanner/__snapshots__/main_test.snap index 31687e74233..0d782ac1835 100755 --- a/cmd/osv-scanner/__snapshots__/main_test.snap +++ b/cmd/osv-scanner/__snapshots__/main_test.snap @@ -262,7 +262,6 @@ Scanned /fixtures/sbom-insecure/postgres-stretch.cdx.xml as CycloneDX S | https://osv.dev/GHSA-m8cg-xc2p-r3fc | 2.5 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | | https://osv.dev/GHSA-vpvm-3wq2-2wvm | 7.0 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | | https://osv.dev/GHSA-xr7r-f8xq-vfvv | 8.6 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | -| https://osv.dev/GHSA-c5pj-mqfh-rvc3 | 7.2 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | | https://osv.dev/GHSA-p782-xgp4-8hr8 | 5.3 | Go | golang.org/x/sys | v0.0.0-20210817142637-7d9622a276b7 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | | https://osv.dev/GO-2022-0493 | | | | | | | https://osv.dev/DLA-3012-1 | | Debian | libxml2 | 2.9.4+dfsg1-2.2+deb9u6 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | @@ -997,7 +996,6 @@ Loaded OSS-Fuzz local db from /osv-scanner/OSS-Fuzz/all.zip +-------------------------------------+------+-----------+--------------------------------+------------------------------------+-------------------------------------------------+ | OSV URL | CVSS | ECOSYSTEM | PACKAGE | VERSION | SOURCE | +-------------------------------------+------+-----------+--------------------------------+------------------------------------+-------------------------------------------------+ -| https://osv.dev/GHSA-c5pj-mqfh-rvc3 | 7.2 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | | https://osv.dev/GHSA-f3fp-gc8g-vw66 | 5.9 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | | https://osv.dev/GHSA-g2j6-57v7-gm8c | 6.1 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | | https://osv.dev/GHSA-m8cg-xc2p-r3fc | 2.5 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | @@ -1022,7 +1020,6 @@ Loaded OSS-Fuzz local db from /osv-scanner/OSS-Fuzz/all.zip +-------------------------------------+------+-----------+--------------------------------+------------------------------------+-------------------------------------------------+ | OSV URL | CVSS | ECOSYSTEM | PACKAGE | VERSION | SOURCE | +-------------------------------------+------+-----------+--------------------------------+------------------------------------+-------------------------------------------------+ -| https://osv.dev/GHSA-c5pj-mqfh-rvc3 | 7.2 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | | https://osv.dev/GHSA-f3fp-gc8g-vw66 | 5.9 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | | https://osv.dev/GHSA-g2j6-57v7-gm8c | 6.1 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | | https://osv.dev/GHSA-m8cg-xc2p-r3fc | 2.5 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | From 559d0c9b2bc9ed6bd133fd83ca43ff265118ba19 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Wed, 1 May 2024 12:18:40 +1200 Subject: [PATCH 11/68] refactor: use `maps` functions instead of custom implementations (#940) This replaces some of our custom code for map-based operations with almost-standard-library versions --- pkg/lockfile/parse-go-lock.go | 3 ++- pkg/lockfile/parse-maven-lock.go | 3 ++- pkg/lockfile/parse-npm-lock.go | 30 ++++---------------------- pkg/lockfile/parse-nuget-lock.go | 6 ++++-- pkg/lockfile/parse-pipenv-lock.go | 4 +++- pkg/lockfile/parse-requirements-txt.go | 3 ++- pkg/lockfile/parse.go | 18 +++------------- 7 files changed, 20 insertions(+), 47 deletions(-) diff --git a/pkg/lockfile/parse-go-lock.go b/pkg/lockfile/parse-go-lock.go index 35f2addc1d4..0cb0bd253cd 100644 --- a/pkg/lockfile/parse-go-lock.go +++ b/pkg/lockfile/parse-go-lock.go @@ -6,6 +6,7 @@ import ( "path/filepath" "strings" + "golang.org/x/exp/maps" "golang.org/x/mod/modfile" ) @@ -91,7 +92,7 @@ func (e GoLockExtractor) Extract(f DepFile) ([]PackageDetails, error) { } } - return pkgDetailsMapToSlice(deduplicatePackages(packages)), nil + return maps.Values(deduplicatePackages(packages)), nil } var _ Extractor = GoLockExtractor{} diff --git a/pkg/lockfile/parse-maven-lock.go b/pkg/lockfile/parse-maven-lock.go index b60091b3897..49f9c2b810f 100644 --- a/pkg/lockfile/parse-maven-lock.go +++ b/pkg/lockfile/parse-maven-lock.go @@ -8,6 +8,7 @@ import ( "strings" "github.com/google/osv-scanner/internal/cachedregexp" + "golang.org/x/exp/maps" ) type MavenLockDependency struct { @@ -150,7 +151,7 @@ func (e MavenLockExtractor) Extract(f DepFile) ([]PackageDetails, error) { details[finalName] = pkgDetails } - return pkgDetailsMapToSlice(details), nil + return maps.Values(details), nil } var _ Extractor = MavenLockExtractor{} diff --git a/pkg/lockfile/parse-npm-lock.go b/pkg/lockfile/parse-npm-lock.go index cee15a0d270..0471d0cbfa4 100644 --- a/pkg/lockfile/parse-npm-lock.go +++ b/pkg/lockfile/parse-npm-lock.go @@ -6,6 +6,8 @@ import ( "path" "path/filepath" "strings" + + "golang.org/x/exp/maps" ) type NpmLockDependency struct { @@ -47,30 +49,6 @@ type NpmLockfile struct { const NpmEcosystem Ecosystem = "npm" -func pkgDetailsMapToSlice(m map[string]PackageDetails) []PackageDetails { - details := make([]PackageDetails, 0, len(m)) - - for _, detail := range m { - details = append(details, detail) - } - - return details -} - -func mergePkgDetailsMap(m1 map[string]PackageDetails, m2 map[string]PackageDetails) map[string]PackageDetails { - details := map[string]PackageDetails{} - - for name, detail := range m1 { - details[name] = detail - } - - for name, detail := range m2 { - details[name] = detail - } - - return details -} - func (dep NpmLockDependency) depGroups() []string { if dep.Dev && dep.Optional { return []string{"dev", "optional"} @@ -90,7 +68,7 @@ func parseNpmLockDependencies(dependencies map[string]NpmLockDependency) map[str for name, detail := range dependencies { if detail.Dependencies != nil { - details = mergePkgDetailsMap(details, parseNpmLockDependencies(detail.Dependencies)) + maps.Copy(details, parseNpmLockDependencies(detail.Dependencies)) } version := detail.Version @@ -217,7 +195,7 @@ func (e NpmLockExtractor) Extract(f DepFile) ([]PackageDetails, error) { return []PackageDetails{}, fmt.Errorf("could not extract from %s: %w", f.Path(), err) } - return pkgDetailsMapToSlice(parseNpmLock(*parsedLockfile)), nil + return maps.Values(parseNpmLock(*parsedLockfile)), nil } var _ Extractor = NpmLockExtractor{} diff --git a/pkg/lockfile/parse-nuget-lock.go b/pkg/lockfile/parse-nuget-lock.go index 858f6f09c4f..c097aee4aa8 100644 --- a/pkg/lockfile/parse-nuget-lock.go +++ b/pkg/lockfile/parse-nuget-lock.go @@ -4,6 +4,8 @@ import ( "encoding/json" "fmt" "path/filepath" + + "golang.org/x/exp/maps" ) type NuGetLockPackage struct { @@ -41,10 +43,10 @@ func parseNuGetLock(lockfile NuGetLockfile) ([]PackageDetails, error) { // its dependencies, there might be different or duplicate dependencies // between frameworks for _, dependencies := range lockfile.Dependencies { - details = mergePkgDetailsMap(details, parseNuGetLockDependencies(dependencies)) + maps.Copy(details, parseNuGetLockDependencies(dependencies)) } - return pkgDetailsMapToSlice(details), nil + return maps.Values(details), nil } type NuGetLockExtractor struct{} diff --git a/pkg/lockfile/parse-pipenv-lock.go b/pkg/lockfile/parse-pipenv-lock.go index 3d3ce3e6aaf..e3e515f0673 100644 --- a/pkg/lockfile/parse-pipenv-lock.go +++ b/pkg/lockfile/parse-pipenv-lock.go @@ -4,6 +4,8 @@ import ( "encoding/json" "fmt" "path/filepath" + + "golang.org/x/exp/maps" ) type PipenvPackage struct { @@ -37,7 +39,7 @@ func (e PipenvLockExtractor) Extract(f DepFile) ([]PackageDetails, error) { addPkgDetails(details, parsedLockfile.Packages, "") addPkgDetails(details, parsedLockfile.PackagesDev, "dev") - return pkgDetailsMapToSlice(details), nil + return maps.Values(details), nil } func addPkgDetails(details map[string]PackageDetails, packages map[string]PipenvPackage, group string) { diff --git a/pkg/lockfile/parse-requirements-txt.go b/pkg/lockfile/parse-requirements-txt.go index 890cd1aeb4e..d8bbdb66bc6 100644 --- a/pkg/lockfile/parse-requirements-txt.go +++ b/pkg/lockfile/parse-requirements-txt.go @@ -7,6 +7,7 @@ import ( "strings" "github.com/google/osv-scanner/internal/cachedregexp" + "golang.org/x/exp/maps" ) const PipEcosystem Ecosystem = "PyPI" @@ -192,7 +193,7 @@ func parseRequirementsTxt(f DepFile, requiredAlready map[string]struct{}) ([]Pac return []PackageDetails{}, fmt.Errorf("error while scanning %s: %w", f.Path(), err) } - return pkgDetailsMapToSlice(packages), nil + return maps.Values(packages), nil } var _ Extractor = RequirementsTxtExtractor{} diff --git a/pkg/lockfile/parse.go b/pkg/lockfile/parse.go index 34f752662be..7f0e0c0a043 100644 --- a/pkg/lockfile/parse.go +++ b/pkg/lockfile/parse.go @@ -6,6 +6,8 @@ import ( "path/filepath" "sort" "strings" + + "golang.org/x/exp/maps" ) func FindParser(pathToLockfile string, parseAs string) (PackageDetailsParser, string) { @@ -57,20 +59,6 @@ var ErrParserNotFound = errors.New("could not determine parser") type Packages []PackageDetails -func toSliceOfEcosystems(ecosystemsMap map[Ecosystem]struct{}) []Ecosystem { - ecosystems := make([]Ecosystem, 0, len(ecosystemsMap)) - - for ecosystem := range ecosystemsMap { - if ecosystem == "" { - continue - } - - ecosystems = append(ecosystems, ecosystem) - } - - return ecosystems -} - func (ps Packages) Ecosystems() []Ecosystem { ecosystems := make(map[Ecosystem]struct{}) @@ -78,7 +66,7 @@ func (ps Packages) Ecosystems() []Ecosystem { ecosystems[pkg.Ecosystem] = struct{}{} } - slicedEcosystems := toSliceOfEcosystems(ecosystems) + slicedEcosystems := maps.Keys(ecosystems) sort.Slice(slicedEcosystems, func(i, j int) bool { return slicedEcosystems[i] < slicedEcosystems[j] From 97029011c8adaf14f03fa66519836063204bf474 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Thu, 2 May 2024 12:12:39 +1200 Subject: [PATCH 12/68] ci: ensure input name case matches just to be safe (#955) I'm pretty sure that inputs are case-insensitive, but to be on the safe side let's update this to match anyway --- .github/workflows/test-action/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-action/action.yml b/.github/workflows/test-action/action.yml index b8165c7daca..bf7cf2a545d 100644 --- a/.github/workflows/test-action/action.yml +++ b/.github/workflows/test-action/action.yml @@ -31,5 +31,5 @@ runs: - name: Upload coverage to Codecov uses: codecov/codecov-action@84508663e988701840491b86de86b666e8a86bed # v4.3.0 with: - token: ${{ inputs.CODECOV_TOKEN }} + token: ${{ inputs.codecov_token }} fail_ci_if_error: true From 8abdafa2c8c5b7eecc93998cbe84cf7a0a8a80fe Mon Sep 17 00:00:00 2001 From: Michael Kedar Date: Thu, 2 May 2024 13:02:34 +1000 Subject: [PATCH 13/68] GR: Support filtering on alias IDs (#946) Check the vuln's aliases when using the `--vulns` or `--ignore-vulns` flag. Closes #922 --- internal/remediation/remediation.go | 18 ++++++++++++++++-- internal/remediation/remediation_test.go | 23 ++++++++++++++++++++++- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/internal/remediation/remediation.go b/internal/remediation/remediation.go index 4d4b29d5afd..5a8be957097 100644 --- a/internal/remediation/remediation.go +++ b/internal/remediation/remediation.go @@ -21,11 +21,11 @@ type RemediationOptions struct { } func (opts RemediationOptions) MatchVuln(v resolution.ResolutionVuln) bool { - if slices.Contains(opts.IgnoreVulns, v.Vulnerability.ID) { + if opts.matchID(v, opts.IgnoreVulns) { return false } - if len(opts.ExplicitVulns) > 0 && !slices.Contains(opts.ExplicitVulns, v.Vulnerability.ID) { + if len(opts.ExplicitVulns) > 0 && !opts.matchID(v, opts.ExplicitVulns) { return false } @@ -36,6 +36,20 @@ func (opts RemediationOptions) MatchVuln(v resolution.ResolutionVuln) bool { return opts.matchSeverity(v) && opts.matchDepth(v) } +func (opts RemediationOptions) matchID(v resolution.ResolutionVuln, ids []string) bool { + if slices.Contains(ids, v.Vulnerability.ID) { + return true + } + + for _, id := range v.Vulnerability.Aliases { + if slices.Contains(ids, id) { + return true + } + } + + return false +} + func (opts RemediationOptions) matchSeverity(v resolution.ResolutionVuln) bool { maxScore := -1.0 // TODO: also check Vulnerability.Affected[].Severity diff --git a/internal/remediation/remediation_test.go b/internal/remediation/remediation_test.go index 576cb6451f8..3025d12d0c6 100644 --- a/internal/remediation/remediation_test.go +++ b/internal/remediation/remediation_test.go @@ -12,7 +12,7 @@ import ( func TestMatchVuln(t *testing.T) { t.Parallel() var ( - // ID: VULN-001, Dev: false, Severity: 6.6, Depth: 3 + // ID: VULN-001, Dev: false, Severity: 6.6, Depth: 3, Aliases: CVE-111, OSV-2 vuln1 = resolution.ResolutionVuln{ Vulnerability: models.Vulnerability{ ID: "VULN-001", @@ -20,6 +20,7 @@ func TestMatchVuln(t *testing.T) { {Type: models.SeverityCVSSV3, Score: "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:H"}, // 6.6 {Type: models.SeverityCVSSV2, Score: "AV:L/AC:L/Au:S/C:P/I:P/A:C"}, // 5.7 }, + Aliases: []string{"CVE-111", "OSV-2"}, }, DevOnly: false, ProblemChains: []resolution.DependencyChain{{ @@ -174,6 +175,26 @@ func TestMatchVuln(t *testing.T) { }, want: true, }, + { + name: "accept explicit ID in alias", + vuln: vuln1, + opt: remediation.RemediationOptions{ + DevDeps: true, + MaxDepth: -1, + ExplicitVulns: []string{"CVE-111"}, + }, + want: true, + }, + { + name: "reject excluded ID in alias", + vuln: vuln1, + opt: remediation.RemediationOptions{ + DevDeps: true, + MaxDepth: -1, + IgnoreVulns: []string{"OSV-2"}, + }, + want: false, + }, } for _, tt := range tests { From 6a43a9173e8a7bfc1f5fa2ac155dcf5522e5fca9 Mon Sep 17 00:00:00 2001 From: Xueqin Cui <72771658+cuixq@users.noreply.github.com> Date: Thu, 2 May 2024 16:28:10 +1000 Subject: [PATCH 14/68] Automated Updates: support parents and dependency imports (#890) This PR adds support for parents and dependency imports: - fetching and parsing upstream pom.xml files - then merging the data into Maven project - add `RequirementsFromOtherPOMs` to system-specific data to store requirements that we don't have access Some of the Maven code should be provided by `deps.dev/util/maven` and `deps.dev/util/resolve` soon... --- .../resolution/datasource/maven_registry.go | 12 +- internal/resolution/datasource/maven_test.go | 4 +- .../manifest/__snapshots__/maven_test.snap | 8 + .../manifest/fixtures/parent/pom.xml | 37 +++ internal/resolution/manifest/fixtures/pom.xml | 8 + internal/resolution/manifest/manifest.go | 2 +- internal/resolution/manifest/maven.go | 217 ++++++++++-------- internal/resolution/manifest/maven_test.go | 132 ++++++++++- 8 files changed, 313 insertions(+), 107 deletions(-) create mode 100644 internal/resolution/manifest/fixtures/parent/pom.xml diff --git a/internal/resolution/datasource/maven_registry.go b/internal/resolution/datasource/maven_registry.go index d4e94f4eee4..9990bd3b1a4 100644 --- a/internal/resolution/datasource/maven_registry.go +++ b/internal/resolution/datasource/maven_registry.go @@ -15,22 +15,20 @@ import ( const MavenCentral = "https://repo.maven.apache.org/maven2" type MavenRegistryAPIClient struct { - Registry string // Base URL of the registry that we are making requests + registry string // Base URL of the registry that we are making requests } -func NewMavenRegistryAPIClient() (*MavenRegistryAPIClient, error) { - return &MavenRegistryAPIClient{ - Registry: MavenCentral, - }, nil +func NewMavenRegistryAPIClient(registry string) *MavenRegistryAPIClient { + return &MavenRegistryAPIClient{registry: registry} } func (m *MavenRegistryAPIClient) GetProject(ctx context.Context, groupID, artifactID, version string) (maven.Project, error) { - url, err := url.JoinPath(m.Registry, strings.ReplaceAll(groupID, ".", "/"), artifactID, version, fmt.Sprintf("%s-%s.pom", artifactID, version)) + u, err := url.JoinPath(m.registry, strings.ReplaceAll(groupID, ".", "/"), artifactID, version, fmt.Sprintf("%s-%s.pom", artifactID, version)) if err != nil { return maven.Project{}, fmt.Errorf("failed to join path: %w", err) } - req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, u, nil) if err != nil { return maven.Project{}, fmt.Errorf("failed to make new request: %w", err) } diff --git a/internal/resolution/datasource/maven_test.go b/internal/resolution/datasource/maven_test.go index 5c665dfbf74..6a25a14e0e6 100644 --- a/internal/resolution/datasource/maven_test.go +++ b/internal/resolution/datasource/maven_test.go @@ -14,9 +14,8 @@ func TestGetProject(t *testing.T) { srv := testutility.NewMockHTTPServer(t) client := &MavenRegistryAPIClient{ - Registry: srv.URL, + registry: srv.URL, } - srv.SetResponse(t, "org/example/x.y.z/1.0.0/x.y.z-1.0.0.pom", []byte(` org.example @@ -24,6 +23,7 @@ func TestGetProject(t *testing.T) { 1.0.0 `)) + got, err := client.GetProject(context.Background(), "org.example", "x.y.z", "1.0.0") if err != nil { t.Fatalf("failed to get Maven project %s:%s verion %s: %v", "org.example", "x.y.z", "1.0.0", err) diff --git a/internal/resolution/manifest/__snapshots__/maven_test.snap b/internal/resolution/manifest/__snapshots__/maven_test.snap index d77a98d9323..0c52d6b2b88 100755 --- a/internal/resolution/manifest/__snapshots__/maven_test.snap +++ b/internal/resolution/manifest/__snapshots__/maven_test.snap @@ -18,6 +18,7 @@ org.parent parent-pom 1.2.0 + ./parent/pom.xml @@ -48,6 +49,13 @@ xyz 2.0.1 + + org.import + import + 1.0.0 + pom + import + diff --git a/internal/resolution/manifest/fixtures/parent/pom.xml b/internal/resolution/manifest/fixtures/parent/pom.xml new file mode 100644 index 00000000000..0a10ee8ee76 --- /dev/null +++ b/internal/resolution/manifest/fixtures/parent/pom.xml @@ -0,0 +1,37 @@ + + + + 4.0.0 + + org.parent + parent-pom + 1.1.1 + + my-app + + http://www.example.com + + pom + + + org.upstream + parent-pom + 1.2.3 + + + + 1.1.1 + + + + + + org.example + aaa + ${aaa.version} + + + + + diff --git a/internal/resolution/manifest/fixtures/pom.xml b/internal/resolution/manifest/fixtures/pom.xml index 9dfaaa3d429..8d783ad1add 100644 --- a/internal/resolution/manifest/fixtures/pom.xml +++ b/internal/resolution/manifest/fixtures/pom.xml @@ -16,6 +16,7 @@ org.parent parent-pom 1.1.1 + ./parent/pom.xml @@ -46,6 +47,13 @@ xyz 2.0.0 + + org.import + import + 1.0.0 + pom + import + diff --git a/internal/resolution/manifest/manifest.go b/internal/resolution/manifest/manifest.go index eb5b3e91da8..6ef4eb94bf2 100644 --- a/internal/resolution/manifest/manifest.go +++ b/internal/resolution/manifest/manifest.go @@ -94,7 +94,7 @@ func GetManifestIO(pathToManifest string) (ManifestIO, error) { base := filepath.Base(pathToManifest) switch { case base == "pom.xml": - return MavenManifestIO{}, nil + return NewMavenManifestIO(), nil case base == "package.json": return NpmManifestIO{}, nil default: diff --git a/internal/resolution/manifest/maven.go b/internal/resolution/manifest/maven.go index 0500339bc9a..49d7ea96c82 100644 --- a/internal/resolution/manifest/maven.go +++ b/internal/resolution/manifest/maven.go @@ -2,30 +2,43 @@ package manifest import ( "bytes" + "context" "encoding/xml" "errors" "fmt" "io" + "os" + "path/filepath" "strings" "deps.dev/util/maven" "deps.dev/util/resolve" - "deps.dev/util/resolve/dep" + "github.com/google/osv-scanner/internal/resolution/datasource" "github.com/google/osv-scanner/pkg/lockfile" ) -type MavenManifestIO struct{} - const ( + OriginImport = "import" OriginManagement = "management" OriginParent = "parent" OriginPlugin = "plugin" OriginProfile = "profile" ) +type MavenManifestIO struct { + datasource.MavenRegistryAPIClient +} + +func NewMavenManifestIO() MavenManifestIO { + return MavenManifestIO{ + MavenRegistryAPIClient: *datasource.NewMavenRegistryAPIClient(datasource.MavenCentral), + } +} + type MavenManifestSpecific struct { Properties []PropertyWithOrigin RequirementsWithProperties []resolve.RequirementVersion + RequirementsFromOtherPOMs []resolve.RequirementVersion // Requirements that we cannot modify directly } type PropertyWithOrigin struct { @@ -33,53 +46,81 @@ type PropertyWithOrigin struct { Origin string // Origin indicates where the property comes from } -// TODO: fetch and merge parent data -// TODO: process dependencies (imports and dedupe) // TODO: handle profiles (activation and interpolation) func (m MavenManifestIO) Read(df lockfile.DepFile) (Manifest, error) { - var project maven.Project - if err := xml.NewDecoder(df).Decode(&project); err != nil { - return Manifest{}, fmt.Errorf("failed to unmarshal input: %w", err) - } - - count := len(project.Properties.Properties) - for _, prof := range project.Profiles { - count += len(prof.Properties.Properties) - } - properties := make([]PropertyWithOrigin, 0, count) - for _, prop := range project.Properties.Properties { - properties = append(properties, PropertyWithOrigin{Property: prop}) - } + ctx := context.Background() var reqsWithProps []resolve.RequirementVersion - addReqsWithProps := func(deps []maven.Dependency, origin string) { + requirementOrigins := make(map[maven.DependencyKey]string) + addRequirementOrigins := func(deps []maven.Dependency, origin string) { for _, dep := range deps { + key := dep.Key() + if _, ok := requirementOrigins[key]; !ok { + requirementOrigins[key] = origin + } if dep.Version.ContainsProperty() { // We only need the original import if the version contains any property. reqsWithProps = append(reqsWithProps, makeRequirementVersion(dep, origin)) } } } - addReqsWithProps(project.Dependencies, "") - addReqsWithProps(project.DependencyManagement.Dependencies, OriginManagement) - for _, profile := range project.Profiles { - addReqsWithProps(profile.Dependencies, mavenOrigin(OriginProfile, string(profile.ID))) - addReqsWithProps(profile.DependencyManagement.Dependencies, mavenOrigin(OriginProfile, string(profile.ID), OriginManagement)) + addAllRequirements := func(project maven.Project, origin string) { + addRequirementOrigins(project.Dependencies, origin) + addRequirementOrigins(project.DependencyManagement.Dependencies, mavenOrigin(origin, OriginManagement)) + for _, profile := range project.Profiles { + addRequirementOrigins(profile.Dependencies, mavenOrigin(origin, OriginProfile, string(profile.ID))) + addRequirementOrigins(profile.DependencyManagement.Dependencies, mavenOrigin(origin, OriginProfile, string(profile.ID), OriginManagement)) + } + for _, plugin := range project.Build.PluginManagement.Plugins { + addRequirementOrigins(plugin.Dependencies, mavenOrigin(origin, OriginPlugin, plugin.ProjectKey.Name())) + } } - for _, plugin := range project.Build.PluginManagement.Plugins { - addReqsWithProps(plugin.Dependencies, mavenOrigin(OriginPlugin, plugin.ProjectKey.Name())) + + var project maven.Project + if err := xml.NewDecoder(df).Decode(&project); err != nil { + return Manifest{}, fmt.Errorf("failed to unmarshal project: %w", err) } + addAllRequirements(project, "") - // Interpolate the project to resolve the properties. - if err := project.Interpolate(); err != nil { - return Manifest{}, fmt.Errorf("failed to interpolate project: %w", err) + // Merging parents data by parsing local parent pom.xml or fetching from upstream. + if err := m.MergeParents(ctx, &project, project.Parent, 1, df.Path(), addAllRequirements, OriginParent); err != nil { + return Manifest{}, fmt.Errorf("failed to merge parents: %w", err) + } + + // Process the dependencies: + // - dedupe dependencies and dependency management + // - import dependency management (not yet transitively) + // - fill in missing dependency version requirement + project.ProcessDependencies(func(groupID, artifactID, version maven.String) (maven.DependencyManagement, error) { + root := maven.Parent{ProjectKey: maven.ProjectKey{GroupID: groupID, ArtifactID: artifactID, Version: version}} + var result maven.Project + if err := m.MergeParents(ctx, &result, root, 0, df.Path(), addAllRequirements, OriginImport); err != nil { + return maven.DependencyManagement{}, err + } + + return result.DependencyManagement, nil + }) + + count := len(project.Properties.Properties) + for _, prof := range project.Profiles { + count += len(prof.Properties.Properties) + } + properties := make([]PropertyWithOrigin, 0, count) + for _, prop := range project.Properties.Properties { + properties = append(properties, PropertyWithOrigin{Property: prop}) } var requirements []resolve.RequirementVersion + var otherRequirements []resolve.RequirementVersion groups := make(map[resolve.PackageKey][]string) - addRequirements := func(deps []maven.Dependency, origin string) { + addRequirements := func(deps []maven.Dependency) { for _, dep := range deps { - requirements = append(requirements, makeRequirementVersion(dep, origin)) + origin := requirementOrigins[dep.Key()] + if strings.HasPrefix(origin, OriginParent+"@") || strings.HasPrefix(origin, OriginImport) { + otherRequirements = append(otherRequirements, makeRequirementVersion(dep, origin)) + } else { + requirements = append(requirements, makeRequirementVersion(dep, origin)) + } if dep.Scope != "" { pk := resolve.PackageKey{ System: resolve.Maven, @@ -100,14 +141,14 @@ func (m MavenManifestIO) Read(df lockfile.DepFile) (Manifest, error) { VersionType: resolve.Requirement, Version: string(project.Parent.Version), }, - Type: makeMavenDepType(maven.Dependency{}, OriginParent), + Type: resolve.MavenDepType(maven.Dependency{}, OriginParent), }) } - addRequirements(project.Dependencies, "") - addRequirements(project.DependencyManagement.Dependencies, OriginManagement) + addRequirements(project.Dependencies) + addRequirements(project.DependencyManagement.Dependencies) for _, profile := range project.Profiles { - addRequirements(profile.Dependencies, mavenOrigin(OriginProfile, string(profile.ID))) - addRequirements(profile.DependencyManagement.Dependencies, mavenOrigin(OriginProfile, string(profile.ID), OriginManagement)) + addRequirements(profile.Dependencies) + addRequirements(profile.DependencyManagement.Dependencies) for _, prop := range profile.Properties.Properties { properties = append(properties, PropertyWithOrigin{ Property: prop, @@ -116,7 +157,7 @@ func (m MavenManifestIO) Read(df lockfile.DepFile) (Manifest, error) { } } for _, plugin := range project.Build.PluginManagement.Plugins { - addRequirements(plugin.Dependencies, mavenOrigin(OriginPlugin, plugin.ProjectKey.Name())) + addRequirements(plugin.Dependencies) } return Manifest{ @@ -136,10 +177,55 @@ func (m MavenManifestIO) Read(df lockfile.DepFile) (Manifest, error) { EcosystemSpecific: MavenManifestSpecific{ Properties: properties, RequirementsWithProperties: reqsWithProps, + RequirementsFromOtherPOMs: otherRequirements, }, }, nil } +// To avoid indefinite loop when fetching parents, +// set a limit on the number of parents. +const MaxParent = 100 + +func (m MavenManifestIO) MergeParents(ctx context.Context, result *maven.Project, current maven.Parent, start int, path string, addRequirements func(maven.Project, string), prefix string) error { + visited := make(map[maven.ProjectKey]bool, MaxParent) + for n := start; n < MaxParent; n++ { + if current.GroupID == "" || current.ArtifactID == "" || current.Version == "" { + break + } + if visited[current.ProjectKey] { + // A cycle of parents is detected + return errors.New("a cycle of parents is detected") + } + visited[current.ProjectKey] = true + + var proj maven.Project + if current.RelativePath != "" { + f, err := os.Open(filepath.Join(filepath.Dir(path), string(current.RelativePath))) + if err != nil { + return fmt.Errorf("failed to open parent file %s: %w", current.RelativePath, err) + } + if err := xml.NewDecoder(f).Decode(&proj); err != nil { + return fmt.Errorf("failed to unmarshal project: %w", err) + } + } else { + var err error + proj, err = m.MavenRegistryAPIClient.GetProject(ctx, string(current.GroupID), string(current.ArtifactID), string(current.Version)) + if err != nil { + return fmt.Errorf("failed to get Maven project %s:%s:%s: %w", current.GroupID, current.ArtifactID, current.Version, err) + } + if n > 0 && proj.Packaging != "pom" { + // A parent project should only be of "pom" packaging type. + return fmt.Errorf("invalid packaging for parent project %s", proj.Packaging) + } + } + addRequirements(proj, mavenOrigin(prefix, current.ProjectKey.Name())) + result.MergeParent(proj) + current = proj.Parent + } + // Interpolate the project to resolve the properties. + return result.Interpolate() +} + // For dependencies in profiles and plugins, we use origin to indicate where they are from. // The origin is in the format prefix@identifier[@postfix] (where @ is the separator): // - prefix indicates it is from profile or plugin @@ -155,7 +241,7 @@ func makeRequirementVersion(dep maven.Dependency, origin string) resolve.Require VersionType: resolve.Requirement, Version: string(dep.Version), }, - Type: makeMavenDepType(dep, origin), + Type: resolve.MavenDepType(dep, origin), } } @@ -173,57 +259,6 @@ func mavenOrigin(list ...string) string { return result } -func makeMavenDepType(dependency maven.Dependency, origin string) dep.Type { - var dt dep.Type - if dependency.Optional == "true" { - dt.AddAttr(dep.Opt, "") - } - if dependency.Scope == "test" { - dt.AddAttr(dep.Test, "") - } else if dependency.Scope != "" && dependency.Scope != "compile" { - dt.AddAttr(dep.Scope, string(dependency.Scope)) - } - if dependency.Type != "" { - dt.AddAttr(dep.MavenArtifactType, string(dependency.Type)) - } - if dependency.Classifier != "" { - dt.AddAttr(dep.MavenClassifier, string(dependency.Classifier)) - } - // Only add Maven dependency origin when it is not direct dependency. - if origin != "" { - dt.AddAttr(dep.MavenDependencyOrigin, origin) - } - - return dt -} - -func depTypeToMavenDependency(typ dep.Type) (maven.Dependency, string, error) { - result := maven.Dependency{} - if _, ok := typ.GetAttr(dep.Opt); ok { - result.Optional = "true" - } - if _, ok := typ.GetAttr(dep.Test); ok { - result.Scope = "test" - } - if s, ok := typ.GetAttr(dep.Scope); ok { - if result.Scope != "" { - return maven.Dependency{}, "", errors.New("invalid Maven dep.Type") - } - result.Scope = maven.String(s) - } - if c, ok := typ.GetAttr(dep.MavenClassifier); ok { - result.Classifier = maven.String(c) - } - if t, ok := typ.GetAttr(dep.MavenArtifactType); ok { - result.Type = maven.String(t) - } - if o, ok := typ.GetAttr(dep.MavenDependencyOrigin); ok { - return result, o, nil - } - - return result, "", nil -} - func projectStartElement(raw string) string { start := strings.Index(raw, " + org.upstream + parent-pom + 1.2.3 + pom + + 2.2.2 + + + + + org.example + bbb + ${bbb.version} + + + + + `)) + srv.SetResponse(t, "org/import/import/1.0.0/import-1.0.0.pom", []byte(` + + org.import + import + 1.0.0 + pom + + 3.3.3 + + + + + org.example + ccc + ${ccc.version} + + + + + `)) + dir, err := os.Getwd() if err != nil { t.Fatalf("failed to get current directory: %v", err) @@ -44,7 +90,10 @@ func TestMavenRead(t *testing.T) { } defer df.Close() - mavenIO := manifest.MavenManifestIO{} + mavenIO := manifest.MavenManifestIO{ + MavenRegistryAPIClient: *datasource.NewMavenRegistryAPIClient(srv.URL), + } + got, err := mavenIO.Read(df) if err != nil { t.Fatalf("failed to read file: %v", err) @@ -163,6 +212,9 @@ func TestMavenRead(t *testing.T) { }, EcosystemSpecific: manifest.MavenManifestSpecific{ Properties: []manifest.PropertyWithOrigin{ + {Property: maven.Property{Name: "bbb.version", Value: "2.2.2"}}, + {Property: maven.Property{Name: "aaa.version", Value: "1.1.1"}}, + {Property: maven.Property{Name: "project.build.sourceEncoding", Value: "UTF-8"}}, {Property: maven.Property{Name: "maven.compiler.source", Value: "1.7"}}, {Property: maven.Property{Name: "maven.compiler.target", Value: "1.7"}}, @@ -192,6 +244,74 @@ func TestMavenRead(t *testing.T) { }, Type: depProfileOne, }, + { + VersionKey: resolve.VersionKey{ + PackageKey: resolve.PackageKey{ + System: resolve.Maven, + Name: "org.example:aaa", + }, + VersionType: resolve.Requirement, + Version: "${aaa.version}", + }, + Type: depParentMgmt, + }, + { + VersionKey: resolve.VersionKey{ + PackageKey: resolve.PackageKey{ + System: resolve.Maven, + Name: "org.example:bbb", + }, + VersionType: resolve.Requirement, + Version: "${bbb.version}", + }, + Type: depParentUpstreamMgmt, + }, + { + VersionKey: resolve.VersionKey{ + PackageKey: resolve.PackageKey{ + System: resolve.Maven, + Name: "org.example:ccc", + }, + VersionType: resolve.Requirement, + Version: "${ccc.version}", + }, + Type: depImport, + }, + }, + RequirementsFromOtherPOMs: []resolve.RequirementVersion{ + { + VersionKey: resolve.VersionKey{ + PackageKey: resolve.PackageKey{ + System: resolve.Maven, + Name: "org.example:aaa", + }, + VersionType: resolve.Requirement, + Version: "1.1.1", + }, + Type: depParentMgmt, + }, + { + VersionKey: resolve.VersionKey{ + PackageKey: resolve.PackageKey{ + System: resolve.Maven, + Name: "org.example:bbb", + }, + VersionType: resolve.Requirement, + Version: "2.2.2", + }, + Type: depParentUpstreamMgmt, + }, + { + VersionKey: resolve.VersionKey{ + PackageKey: resolve.PackageKey{ + System: resolve.Maven, + Name: "org.example:ccc", + }, + VersionType: resolve.Requirement, + Version: "3.3.3", + }, + Type: depImport, + }, }, }, } From b23fa296f8eafa355ece9125b12cbef36a1569b7 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Fri, 3 May 2024 11:19:09 +1200 Subject: [PATCH 15/68] ci: cancel in-progress runs when new changes are pushed (#959) This saves a bit of processing power, and also can help Codecov by reducing some of the API calls it makes which impact rate limiting --- .github/workflows/checks.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index f93aa8e7107..86983261c06 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -23,6 +23,11 @@ on: merge_group: branches: [main] +concurrency: + # Pushing new changes to a branch will cancel any in-progress CI runs + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + # Restrict jobs in this workflow to have no permissions by default; permissions # should be granted per job as needed using a dedicated `permissions` block permissions: {} From 37f290f53cefb146bd89a136f6d44b468d5bde15 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Fri, 3 May 2024 11:19:31 +1200 Subject: [PATCH 16/68] chore: improve version fixture generators for local usage (#953) This updates the generators used to build fixtures for `semantic` in a few different ways particularly if you're running them locally: - you can use `VERSION_GENERATOR_PRINT` to control if successes, failures, or everything is outputted - if any comparisons fail, then the generator will exit with code 1 - the generated fixture file will now assuredly have a final newline, in accordance with our editor config --- this is the first of a couple of updates to the generators based on what I've already done in `osv-detector` --- scripts/generators/GenerateMavenVersions.java | 46 +++++++++++++++---- .../generators/generate-debian-versions.py | 25 ++++++++-- .../generate-packagist-versions.php | 24 ++++++++-- scripts/generators/generate-pypi-versions.py | 25 ++++++++-- .../generators/generate-rubygems-versions.rb | 17 ++++++- 5 files changed, 111 insertions(+), 26 deletions(-) diff --git a/scripts/generators/GenerateMavenVersions.java b/scripts/generators/GenerateMavenVersions.java index 7c8f6ba2f7f..4f60dd531f4 100644 --- a/scripts/generators/GenerateMavenVersions.java +++ b/scripts/generators/GenerateMavenVersions.java @@ -133,12 +133,14 @@ public static boolean compareVers(String version1, String op, String version2) { throw new RuntimeException("unsupported comparison operator " + op); } - public static void compareVersions(List lines, String select) { - lines.forEach(line -> { + public static boolean compareVersions(List lines, String select) { + boolean didAnyFail = false; + + for(String line : lines) { line = line.trim(); if(line.isEmpty() || line.startsWith("#") || line.startsWith("//")) { - return; + continue; } String[] parts = line.split(" "); @@ -148,22 +150,28 @@ public static void compareVersions(List lines, String select) { boolean r = compareVers(v1, op, v2); + if(!r) { + didAnyFail = true; + } + if(select.equals("failures") && r) { - return; + continue; } if(select.equals("successes") && !r) { - return; + continue; } String color = r ? "\033[92m" : "\033[91m"; String rs = r ? "T" : "F"; System.out.printf("%s%s\033[0m: \033[93m%s\033[0m\n", color, rs, line); - }); + } + + return didAnyFail; } - public static void compareVersionsInFile(String filepath, String select) throws IOException { + public static boolean compareVersionsInFile(String filepath, String select) throws IOException { List lines = new ArrayList<>(); try(BufferedReader br = new BufferedReader(new FileReader(filepath))) { @@ -175,7 +183,7 @@ public static void compareVersionsInFile(String filepath, String select) throws } } - compareVersions(lines, select); + return compareVersions(lines, select); } public static List generateVersionCompares(List versions) { @@ -198,12 +206,30 @@ public static List generatePackageCompares(Map> pac .collect(Collectors.toList()); } + public static String getSelectFilter() { + // set this to either "failures" or "successes" to only have those comparison results + // printed; setting it to anything else will have all comparison results printed + String value = System.getenv("VERSION_GENERATOR_PRINT"); + + if(value == null) { + return "failures"; + } + + return value; + } + public static void main(String[] args) throws IOException { - String outfile = "maven-versions-generated.txt"; + String outfile = "internal/semantic/fixtures/maven-versions-generated.txt"; Map> packages = fetchPackageVersions(); writeToFile(outfile, generatePackageCompares(packages)); - compareVersionsInFile(outfile, "failures"); + String show = getSelectFilter(); + + boolean didAnyFail = compareVersionsInFile(outfile, show); + + if(didAnyFail) { + System.exit(1); + } } } diff --git a/scripts/generators/generate-debian-versions.py b/scripts/generators/generate-debian-versions.py index b0abc6262b1..e759bfefd79 100755 --- a/scripts/generators/generate-debian-versions.py +++ b/scripts/generators/generate-debian-versions.py @@ -1,10 +1,11 @@ #!/usr/bin/env python3 -import zipfile -import operator -import urllib.request import json +import operator +import os import subprocess +import urllib.request +import zipfile from pathlib import Path @@ -121,6 +122,8 @@ def compare(v1, relate, v2): def compare_versions(lines, select="all"): + has_any_failed = False + for line in lines: line = line.strip() @@ -131,6 +134,9 @@ def compare_versions(lines, select="all"): r = compare(DebianVersion(v1), op, DebianVersion(v2)) + if not r: + has_any_failed = r + if select == "failures" and r: continue @@ -140,12 +146,13 @@ def compare_versions(lines, select="all"): color = '\033[92m' if r else '\033[91m' rs = "T" if r else "F" print(f"{color}{rs}\033[0m: \033[93m{line}\033[0m") + return has_any_failed def compare_versions_in_file(filepath, select="all"): with open(filepath) as f: lines = f.readlines() - compare_versions(lines, select) + return compare_versions(lines, select) def generate_version_compares(versions): @@ -184,5 +191,13 @@ def fetch_packages_versions(): packs = fetch_packages_versions() with open(outfile, "w") as f: f.writelines(generate_package_compares(packs)) + f.write("\n") + +# set this to either "failures" or "successes" to only have those comparison results +# printed; setting it to anything else will have all comparison results printed +show = os.environ.get("VERSION_GENERATOR_PRINT", "failures") + +did_any_fail = compare_versions_in_file(outfile, show) -compare_versions_in_file(outfile, "failures") +if did_any_fail: + sys.exit(1) diff --git a/scripts/generators/generate-packagist-versions.php b/scripts/generators/generate-packagist-versions.php index c5602cbeee5..a81a1fa3f7d 100644 --- a/scripts/generators/generate-packagist-versions.php +++ b/scripts/generators/generate-packagist-versions.php @@ -132,8 +132,10 @@ function generatePackageCompares(array $packages): array return array_merge(...$comparisons); } -function compareVersions(array $lines, string $select = "all"): void +function compareVersions(array $lines, string $select = "all"): bool { + $hasAnyFailed = false; + foreach ($lines as $line) { $line = trim($line); @@ -145,6 +147,10 @@ function compareVersions(array $lines, string $select = "all"): void $r = version_compare($v1, $v2, $op); + if (!$r) { + $hasAnyFailed = true; + } + if ($select === "failures" && $r === true) { continue; } @@ -157,13 +163,23 @@ function compareVersions(array $lines, string $select = "all"): void $rs = $r ? "T" : "F"; echo "$color$rs\033[0m: \033[93m$line\033[0m\n"; } + + return $hasAnyFailed; } -$outfile = "packagist-versions-generated.txt"; +$outfile = "internal/semantic/fixtures/packagist-versions-generated.txt"; /** @noinspection PhpUnhandledExceptionInspection */ $packages = fetchPackageVersions(); -file_put_contents($outfile, implode("\n", array_unique(generatePackageCompares($packages)))); +file_put_contents($outfile, implode("\n", array_unique(generatePackageCompares($packages))) . "\n"); -compareVersions(explode("\n", file_get_contents($outfile)), "failures"); +// set this to either "failures" or "successes" to only have those comparison results +// printed; setting it to anything else will have all comparison results printed +$show = getenv("VERSION_GENERATOR_PRINT") ?: "failures"; + +$didAnyFail = compareVersions(explode("\n", file_get_contents($outfile)), $show); + +if ($didAnyFail === true) { + exit(1); +} diff --git a/scripts/generators/generate-pypi-versions.py b/scripts/generators/generate-pypi-versions.py index cb9886a24b9..59f5960dc84 100755 --- a/scripts/generators/generate-pypi-versions.py +++ b/scripts/generators/generate-pypi-versions.py @@ -1,10 +1,11 @@ #!/usr/bin/env python3 -import packaging.version -import zipfile +import json import operator +import os +import packaging.version import urllib.request -import json +import zipfile # this requires you run "pip install packaging" - have to be careful about versions too @@ -43,6 +44,8 @@ def compare(v1, relate, v2): def compare_versions(lines, select="all"): + has_any_failed = False + for line in lines: line = line.strip() @@ -53,6 +56,9 @@ def compare_versions(lines, select="all"): r = compare(packaging.version.parse(v1), op, packaging.version.parse(v2)) + if not r: + has_any_failed = True + if select == "failures" and r: continue @@ -62,12 +68,13 @@ def compare_versions(lines, select="all"): color = '\033[92m' if r else '\033[91m' rs = "T" if r else "F" print(f"{color}{rs}\033[0m: \033[93m{line}\033[0m") + return has_any_failed def compare_versions_in_file(filepath, select="all"): with open(filepath) as f: lines = f.readlines() - compare_versions(lines, select) + return compare_versions(lines, select) def generate_version_compares(versions): @@ -106,5 +113,13 @@ def fetch_packages_versions(): packs = fetch_packages_versions() with open(outfile, "w") as f: f.writelines(generate_package_compares(packs)) + f.write("\n") + +# set this to either "failures" or "successes" to only have those comparison results +# printed; setting it to anything else will have all comparison results printed +show = os.environ.get("VERSION_GENERATOR_PRINT", "failures") + +did_any_fail = compare_versions_in_file(outfile, show) -compare_versions_in_file(outfile, "failures") +if did_any_fail: + sys.exit(1) diff --git a/scripts/generators/generate-rubygems-versions.rb b/scripts/generators/generate-rubygems-versions.rb index 0ee5cd5736a..3f4d77cc15d 100755 --- a/scripts/generators/generate-rubygems-versions.rb +++ b/scripts/generators/generate-rubygems-versions.rb @@ -35,7 +35,10 @@ def compare_version(v1, op, v2) end # @param [Array] lines +# @return [Boolean] def compare_versions(lines, select = :all) + has_any_failed = false + lines.each do |line| line = line.strip @@ -48,6 +51,8 @@ def compare_versions(lines, select = :all) r = compare_version(v1, op, v2) + has_any_failed = true unless r + next if select == :failures && r == true next if select == :successes && r != true @@ -55,6 +60,8 @@ def compare_versions(lines, select = :all) rs = r ? "T" : "F" puts "#{color}#{rs}\033[0m: \033[93m#{line}\033[0m" end + + has_any_failed end def compare_versions_in_file(filepath, select = :all) @@ -96,6 +103,12 @@ def fetch_packages_versions packs = fetch_packages_versions -File.open(outfile, "w") { |f| f.write(generate_package_compares(packs).uniq.join("\n")) } +File.open(outfile, "w") { |f| f.write(generate_package_compares(packs).uniq.join("\n") + "\n") } + +# set this to either "failures" or "successes" to only have those comparison results +# printed; setting it to anything else will have all comparison results printed +show = ENV.fetch("VERSION_GENERATOR_PRINT", :failures).to_sym + +did_any_fail = compare_versions_in_file(outfile, show) -compare_versions_in_file(outfile, :failures) +exit(1) if did_any_fail From f1c4fc91fd15ab0002191794b595de4c76a427c3 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 3 May 2024 01:20:22 +0200 Subject: [PATCH 17/68] chore(deps): lock file maintenance (#936) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Update | Change | |---|---| | lockFileMaintenance | All locks refreshed | 🔧 This Pull Request updates lock files to use the latest dependency versions. --- ### Configuration 📅 **Schedule**: Branch creation - "before 4am on monday" in timezone Australia/Sydney, Automerge - At any time (no schedule defined). đŸšĻ **Automerge**: Disabled by config. Please merge this manually once you are satisfied. â™ģ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. đŸ‘ģ **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/google/osv-scanner). From 9236fb416e1c9ee02ddbc52ae6c974964bb0b131 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Fri, 3 May 2024 15:14:37 +1200 Subject: [PATCH 18/68] chore: support skipping known unsupported comparisons in generators (#954) Cherry pick of https://github.com/G-Rath/osv-detector/pull/185 > This is really all because of Maven, whose version comparison implementation is apparently pretty buggy - for now I'm going to ignore it and hope that in ~6 months when I check back on things at least some of the bugs will be fixed. This is already included in the CRAN generator --- scripts/generators/GenerateMavenVersions.java | 54 ++++++++++++++++++- .../generators/generate-debian-versions.py | 33 +++++++++++- .../generate-packagist-versions.php | 44 ++++++++++++++- scripts/generators/generate-pypi-versions.py | 33 +++++++++++- .../generators/generate-rubygems-versions.rb | 35 +++++++++++- 5 files changed, 191 insertions(+), 8 deletions(-) diff --git a/scripts/generators/GenerateMavenVersions.java b/scripts/generators/GenerateMavenVersions.java index 4f60dd531f4..65ff982c0f2 100644 --- a/scripts/generators/GenerateMavenVersions.java +++ b/scripts/generators/GenerateMavenVersions.java @@ -32,6 +32,46 @@ * */ public class GenerateMavenVersions { + /** + * An array of version comparisons that are known to be unsupported and so + * should be commented out in the generated fixture. + *

+ * Generally this is because the native implementation has a suspected bug + * that causes the comparison to return incorrect results, and so supporting + * such comparisons in the detector would in fact be wrong. + */ + private static final String[] UNSUPPORTED_COMPARISONS = { + "0.0.0-2021-07-06T00-28-13-573087f7 < 0.0.0-2021-07-06T01-14-42-efe42242", + "0.0.0-2021-12-06T00-08-57-89a33731 < 0.0.0-2021-12-06T01-21-56-e3888760", + "0.0.0-2022-02-01T00-45-53-0300684a < 0.0.0-2022-02-01T05-45-16-7258ece0", + "0.0.0-2022-02-28T00-18-39-7fe0d845 < 0.0.0-2022-02-28T04-15-47-83c97ebe", + "0.0.0-2022-04-29T00-08-11-7086a3ec < 0.0.0-2022-04-29T01-20-09-b424f986", + "0.0.0-2022-06-14T00-21-33-f21869a7 < 0.0.0-2022-06-14T02-56-29-1db980e0", + "0.0.0-2022-08-16T00-14-19-aeae3dc3 < 0.0.0-2022-08-16T10-34-26-7a56f709", + "0.0.0-2022-08-22T00-46-32-4652d3db < 0.0.0-2022-08-22T06-46-40-e7409ac5", + "0.0.0-2022-10-31T00-42-12-322ba6b9 < 0.0.0-2022-10-31T01-23-06-c6652489", + "0.0.0-2022-10-31T07-00-43-71eccd49 < 0.0.0-2022-10-31T07-05-43-97874976", + "0.0.0-2022-12-01T00-02-29-fe8d6705 < 0.0.0-2022-12-01T01-56-22-5b442198", + "0.0.0-2022-12-18T00-44-34-a222f475 < 0.0.0-2022-12-18T01-45-19-fec81751", + "0.0.0-2023-03-20T00-52-15-4b4c0e7 < 0.0.0-2023-03-20T01-49-44-80e3135" + }; + + public static boolean isUnsupportedComparison(String line) { + return Arrays.stream(UNSUPPORTED_COMPARISONS).anyMatch(line::equals); + } + + public static String uncomment(String line) { + if(line.startsWith("#")) { + return line.substring(1); + } + + if(line.startsWith("//")) { + return line.substring(2); + } + + return line; + } + public static String downloadMavenDb() throws IOException { URL website = new URL("https://osv-vulnerabilities.storage.googleapis.com/Maven/all.zip"); String file = "./maven-db.zip"; @@ -140,6 +180,12 @@ public static boolean compareVersions(List lines, String select) { line = line.trim(); if(line.isEmpty() || line.startsWith("#") || line.startsWith("//")) { + String maybeUnsupported = uncomment(line).trim(); + + if(isUnsupportedComparison(maybeUnsupported)) { + System.out.printf("\033[96mS\033[0m: \033[93m%s\033[0m\n", maybeUnsupported); + } + continue; } @@ -192,7 +238,13 @@ public static List generateVersionCompares(List versions) { String previousVersion = versions.get(i - 1); String op = compareVers(currentVersion, "=", previousVersion) ? "=" : "<"; - return String.format("%s %s %s", previousVersion, op, currentVersion); + String comparison = String.format("%s %s %s", previousVersion, op, currentVersion); + + if(isUnsupportedComparison(comparison)) { + comparison = "# " + comparison; + } + + return comparison; }).collect(Collectors.toList()); } diff --git a/scripts/generators/generate-debian-versions.py b/scripts/generators/generate-debian-versions.py index e759bfefd79..624ee6edfce 100755 --- a/scripts/generators/generate-debian-versions.py +++ b/scripts/generators/generate-debian-versions.py @@ -8,7 +8,6 @@ import zipfile from pathlib import Path - # this requires being run on an OS that has a version of "dpkg" which supports the # "--compare-versions" option; also make sure to consider the version of dpkg being # used in case there are changes to the comparing logic (last run with 1.19.7). @@ -18,6 +17,27 @@ # the results of said subprocess calls; a typical no-cache run takes about 5+ # minutes whereas with the cache it only takes seconds. +# An array of version comparisons that are known to be unsupported and so +# should be commented out in the generated fixture. +# +# Generally this is because the native implementation has a suspected bug +# that causes the comparison to return incorrect results, and so supporting +# such comparisons in the detector would in fact be wrong. +UNSUPPORTED_COMPARISONS = [] + + +def is_unsupported_comparison(line): + return line in UNSUPPORTED_COMPARISONS + + +def uncomment(line): + if line.startswith("#"): + return line[1:] + if line.startswith("//"): + return line[2:] + return line + + def download_debian_db(): urllib.request.urlretrieve("https://osv-vulnerabilities.storage.googleapis.com/Debian/all.zip", "debian-db.zip") @@ -128,6 +148,10 @@ def compare_versions(lines, select="all"): line = line.strip() if line == "" or line.startswith('#') or line.startswith('//'): + maybe_unsupported = uncomment(line).strip() + + if is_unsupported_comparison(maybe_unsupported): + print(f"\033[96mS\033[0m: \033[93m{maybe_unsupported}\033[0m") continue v1, op, v2 = line.strip().split(" ") @@ -160,7 +184,12 @@ def generate_version_compares(versions): for i, version in enumerate(versions): if i == 0: continue - comparisons.append(f"{versions[i - 1]} < {version}\n") + + comparison = f"{versions[i - 1]} < {version}\n" + + if is_unsupported_comparison(comparison.strip()): + comparison = "# " + comparison + comparisons.append(comparison) return comparisons diff --git a/scripts/generators/generate-packagist-versions.php b/scripts/generators/generate-packagist-versions.php index a81a1fa3f7d..ff14e61479d 100644 --- a/scripts/generators/generate-packagist-versions.php +++ b/scripts/generators/generate-packagist-versions.php @@ -1,5 +1,35 @@ ] +UNSUPPORTED_COMPARISONS = [] + +# @param [String] line +# @return [Boolean] +def is_unsupported_comparison?(line) + UNSUPPORTED_COMPARISONS.include? line +end + +# @param [String] line +# @return [String] +def uncomment(line) + line.sub(/^#|\/\//, "") +end + def download_rubygems_db URI.open("https://osv-vulnerabilities.storage.googleapis.com/RubyGems/all.zip") do |zip| File.open("rubygems-db.zip", "wb") { |f| f.write(zip.read) } @@ -42,7 +64,13 @@ def compare_versions(lines, select = :all) lines.each do |line| line = line.strip - next if line.empty? || line.start_with?("#") || line.start_with?("//") + if line.empty? || line.start_with?("#") || line.start_with?("//") + maybe_unsupported = uncomment(line).strip + + puts "\033[96mS\033[0m: \033[93m#{maybe_unsupported}\033[0m" if is_unsupported_comparison?(maybe_unsupported) + + next + end parts = line.split(" ") v1 = parts[0] @@ -77,7 +105,10 @@ def generate_version_compares(versions) op = "<" op = "=" if versions[i - 1] == version - comparisons << "#{versions[i - 1]} #{op} #{version}" + comparison = "#{versions[i - 1]} #{op} #{version}" + comparison = "# #{comparison}" if is_unsupported_comparison?(comparison) + + comparisons << comparison end comparisons From c2bd45ef971a48d186526d609146d572cc5ec07c Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Fri, 3 May 2024 15:15:36 +1200 Subject: [PATCH 19/68] fix: ensure the sarif output has a stable order (#938) This stabilizes the order in the SARIF output so that it is deterministic, as #937 proved it was not. --- internal/output/__snapshots__/sarif_test.snap | 1214 +++++++++++++++++ internal/output/result.go | 24 + internal/output/sarif.go | 12 +- 3 files changed, 1241 insertions(+), 9 deletions(-) diff --git a/internal/output/__snapshots__/sarif_test.snap b/internal/output/__snapshots__/sarif_test.snap index 2a70e024726..0a3e141c826 100755 --- a/internal/output/__snapshots__/sarif_test.snap +++ b/internal/output/__snapshots__/sarif_test.snap @@ -137,3 +137,1217 @@ } --- + +[TestPrintSARIFReport_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_no_license_violations - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_some_license_violations - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithLicenseViolations/multiple_sources_with_no_packages - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithLicenseViolations/no_sources - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithLicenseViolations/one_source_with_no_packages - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithLicenseViolations/one_source_with_one_package,_no_license_violations - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithLicenseViolations/one_source_with_one_package_and_multiple_license_violations - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithLicenseViolations/one_source_with_one_package_and_one_license_violation - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithLicenseViolations/two_sources_with_packages,_one_license_violation - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithMixedIssues/multiple_sources_with_a_mixed_count_of_packages,_some_vulnerabilities_and_license_violations - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [ + { + "id": "OSV-1", + "name": "OSV-1", + "shortDescription": { + "text": "OSV-1: Something scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-1" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/third/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/third/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/third/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/third/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + }, + { + "id": "OSV-2", + "name": "OSV-2", + "shortDescription": { + "text": "OSV-2: Something less scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-2" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine2 | 3.2.5 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine2 | 3.2.5 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + } + ], + "version": "1.7.2" + } + }, + "artifacts": [ + { + "location": { + "uri": "path/to/my/first/lockfile" + }, + "length": -1 + }, + { + "location": { + "uri": "path/to/my/third/lockfile" + }, + "length": -1 + }, + { + "location": { + "uri": "path/to/my/second/lockfile" + }, + "length": -1 + } + ], + "results": [ + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/third/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-2", + "ruleIndex": 1, + "level": "warning", + "message": { + "text": "Package 'mine2@3.2.5' is vulnerable to 'OSV-2'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/second/lockfile" + } + } + } + ] + } + ] + } + ] +} + +--- + +[TestPrintSARIFReport_WithMixedIssues/one_source_with_one_package,_one_vulnerability,_and_one_license_violation - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [ + { + "id": "OSV-1", + "name": "OSV-1", + "shortDescription": { + "text": "OSV-1: Something scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-1" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + } + ], + "version": "1.7.2" + } + }, + "artifacts": [ + { + "location": { + "uri": "path/to/my/first/lockfile" + }, + "length": -1 + } + ], + "results": [ + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + } + ] + } + ] +} + +--- + +[TestPrintSARIFReport_WithMixedIssues/two_sources_with_packages,_one_vulnerability,_one_license_violation - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [ + { + "id": "OSV-1", + "name": "OSV-1", + "shortDescription": { + "text": "OSV-1: Something scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-1" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + } + ], + "version": "1.7.2" + } + }, + "artifacts": [ + { + "location": { + "uri": "path/to/my/first/lockfile" + }, + "length": -1 + } + ], + "results": [ + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + } + ] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_and_multiple_vulnerabilities - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [ + { + "id": "OSV-1", + "name": "OSV-1", + "shortDescription": { + "text": "OSV-1: Something scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-1" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.2 |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.2 |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + }, + { + "id": "OSV-2", + "name": "OSV-2", + "shortDescription": { + "text": "OSV-2: Something less scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-2" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine2 | 3.2.5 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine2 | 3.2.5 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + }, + { + "id": "OSV-3", + "name": "OSV-3", + "shortDescription": { + "text": "OSV-3: Something mildly scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-3" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-3](https://osv.dev/list?q=OSV-3)**.\n\n## [OSV-3](https://osv.dev/vulnerability/OSV-3)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine3 | 0.4.1 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-3\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-3](https://osv.dev/list?q=OSV-3)**.\n\n## [OSV-3](https://osv.dev/vulnerability/OSV-3)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine3 | 0.4.1 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-3\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + }, + { + "id": "OSV-5", + "name": "OSV-5", + "shortDescription": { + "text": "OSV-5: Something scarier!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-5" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-5](https://osv.dev/list?q=OSV-5)**.\n\n## [OSV-5](https://osv.dev/vulnerability/OSV-5)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/second/lockfile | mine3 | 0.4.1 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-5\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-5\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-5](https://osv.dev/list?q=OSV-5)**.\n\n## [OSV-5](https://osv.dev/vulnerability/OSV-5)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/second/lockfile | mine3 | 0.4.1 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-5\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-5\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + } + ], + "version": "1.7.2" + } + }, + "artifacts": [ + { + "location": { + "uri": "path/to/my/first/lockfile" + }, + "length": -1 + }, + { + "location": { + "uri": "path/to/my/second/lockfile" + }, + "length": -1 + } + ], + "results": [ + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.2' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-2", + "ruleIndex": 1, + "level": "warning", + "message": { + "text": "Package 'mine2@3.2.5' is vulnerable to 'OSV-2'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/second/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-3", + "ruleIndex": 2, + "level": "warning", + "message": { + "text": "Package 'mine3@0.4.1' is vulnerable to 'OSV-3'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/second/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-5", + "ruleIndex": 3, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-5'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-5", + "ruleIndex": 3, + "level": "warning", + "message": { + "text": "Package 'mine3@0.4.1' is vulnerable to 'OSV-5'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/second/lockfile" + } + } + } + ] + } + ] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_no_vulnerabilities - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_some_vulnerabilities - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [ + { + "id": "OSV-1", + "name": "OSV-1", + "shortDescription": { + "text": "OSV-1: Something scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-1" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/third/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/third/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/third/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/third/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + }, + { + "id": "OSV-2", + "name": "OSV-2", + "shortDescription": { + "text": "OSV-2: Something less scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-2" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine2 | 3.2.5 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine2 | 3.2.5 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + } + ], + "version": "1.7.2" + } + }, + "artifacts": [ + { + "location": { + "uri": "path/to/my/first/lockfile" + }, + "length": -1 + }, + { + "location": { + "uri": "path/to/my/third/lockfile" + }, + "length": -1 + }, + { + "location": { + "uri": "path/to/my/second/lockfile" + }, + "length": -1 + } + ], + "results": [ + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/third/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-2", + "ruleIndex": 1, + "level": "warning", + "message": { + "text": "Package 'mine2@3.2.5' is vulnerable to 'OSV-2'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/second/lockfile" + } + } + } + ] + } + ] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/multiple_sources_with_no_packages - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/no_sources - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/one_source_with_no_packages - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/one_source_with_one_package,_no_vulnerabilities - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/one_source_with_one_package_and_one_vulnerability - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [ + { + "id": "OSV-1", + "name": "OSV-1", + "shortDescription": { + "text": "OSV-1: Something scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-1" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + } + ], + "version": "1.7.2" + } + }, + "artifacts": [ + { + "location": { + "uri": "path/to/my/first/lockfile" + }, + "length": -1 + } + ], + "results": [ + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + } + ] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/one_source_with_one_package_and_two_aliases_of_a_single_vulnerability - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [ + { + "id": "OSV-1", + "name": "OSV-1", + "shortDescription": { + "text": "OSV-1: Something scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-1", + "GHSA-123" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**\n(Also published as: [GHSA-123](https://osv.dev/vulnerability/GHSA-123), ).\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n## [GHSA-123](https://osv.dev/vulnerability/GHSA-123)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**\n(Also published as: [GHSA-123](https://osv.dev/vulnerability/GHSA-123), ).\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n## [GHSA-123](https://osv.dev/vulnerability/GHSA-123)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + } + ], + "version": "1.7.2" + } + }, + "artifacts": [ + { + "location": { + "uri": "path/to/my/first/lockfile" + }, + "length": -1 + } + ], + "results": [ + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1' (also known as 'GHSA-123')." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1' (also known as 'GHSA-123')." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + } + ] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/one_source_with_vulnerabilities,_some_missing_content - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [ + { + "id": "OSV-1", + "name": "OSV-1", + "shortDescription": { + "text": "OSV-1" + }, + "fullDescription": { + "text": "This vulnerability allows for some very scary stuff to happen - seriously, you'd not believe it!", + "markdown": "This vulnerability allows for some very scary stuff to happen - seriously, you'd not believe it!" + }, + "deprecatedIds": [ + "OSV-1" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e This vulnerability allows for some very scary stuff to happen - seriously, you'd not believe it!\n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e This vulnerability allows for some very scary stuff to happen - seriously, you'd not believe it!\n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + }, + { + "id": "OSV-2", + "name": "OSV-2", + "shortDescription": { + "text": "OSV-2" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-2" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine3 | 0.10.2-rc |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine3 | 0.10.2-rc |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + } + ], + "version": "1.7.2" + } + }, + "artifacts": [ + { + "location": { + "uri": "path/to/my/first/lockfile" + }, + "length": -1 + } + ], + "results": [ + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-2", + "ruleIndex": 1, + "level": "warning", + "message": { + "text": "Package 'mine3@0.10.2-rc' is vulnerable to 'OSV-2'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + } + ] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/two_sources_with_packages,_one_vulnerability - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [ + { + "id": "OSV-1", + "name": "OSV-1", + "shortDescription": { + "text": "OSV-1: Something scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-1" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + } + ], + "version": "1.7.2" + } + }, + "artifacts": [ + { + "location": { + "uri": "path/to/my/first/lockfile" + }, + "length": -1 + } + ], + "results": [ + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + } + ] + } + ] +} + +--- diff --git a/internal/output/result.go b/internal/output/result.go index 080a3422813..eb361815731 100644 --- a/internal/output/result.go +++ b/internal/output/result.go @@ -3,8 +3,10 @@ package output import ( "encoding/json" "slices" + "strings" "github.com/google/osv-scanner/pkg/models" + "golang.org/x/exp/maps" ) type pkgWithSource struct { @@ -15,6 +17,28 @@ type pkgWithSource struct { // Custom implementation of this unique set map to allow it to serialize to JSON type pkgSourceSet map[pkgWithSource]struct{} +// StableKeys returns the pkgWithSource keys in a deterministic order +func (pss *pkgSourceSet) StableKeys() []pkgWithSource { + pkgWithSrcKeys := maps.Keys(*pss) + + slices.SortFunc(pkgWithSrcKeys, func(a, b pkgWithSource) int { + // compare based on each field in descending priority + for _, fn := range []func() int{ + func() int { return strings.Compare(a.Source.Path, b.Source.Path) }, + func() int { return strings.Compare(a.Package.Name, b.Package.Name) }, + func() int { return strings.Compare(a.Package.Version, b.Package.Version) }, + } { + if r := fn(); r != 0 { + return r + } + } + + return 0 + }) + + return pkgWithSrcKeys +} + func (pss *pkgSourceSet) MarshalJSON() ([]byte, error) { res := []pkgWithSource{} diff --git a/internal/output/sarif.go b/internal/output/sarif.go index ef63ddd407e..c3a069f8e57 100644 --- a/internal/output/sarif.go +++ b/internal/output/sarif.go @@ -15,7 +15,6 @@ import ( "github.com/google/osv-scanner/pkg/models" "github.com/jedib0t/go-pretty/v6/table" "github.com/owenrumney/go-sarif/v2/sarif" - "golang.org/x/exp/maps" ) type HelpTemplateData struct { @@ -196,13 +195,7 @@ func createSARIFHelpText(gv *groupedSARIFFinding) string { helpText := strings.Builder{} - pkgWithSrcKeys := maps.Keys(gv.PkgSource) - slices.SortFunc(pkgWithSrcKeys, func(a, b pkgWithSource) int { - // This doesn't take into account multiple packages within the same source file - // which will still be non deterministic. But since that is a rare edge case, - // no need to add significant extra logic here to make it deterministic. - return strings.Compare(a.Source.Path, b.Source.Path) - }) + pkgWithSrcKeys := gv.PkgSource.StableKeys() affectedPackagePaths := []string{} for _, pws := range pkgWithSrcKeys { @@ -282,7 +275,8 @@ func PrintSARIFReport(vulnResult *models.VulnerabilityResults, outputWriter io.W WithTextHelp(helpText) rule.DeprecatedIds = gv.AliasedIDList - for pws := range gv.PkgSource { + + for _, pws := range gv.PkgSource.StableKeys() { artifactPath := stripGitHubWorkspace(pws.Source.Path) if filepath.IsAbs(artifactPath) { // this only errors if the file path is not absolute, From 9039e93b4e94da4c34adfadc78b2d82f80cb33db Mon Sep 17 00:00:00 2001 From: Rex P <106129829+another-rex@users.noreply.github.com> Date: Mon, 6 May 2024 10:20:25 +1000 Subject: [PATCH 20/68] Fix snapshot for test (#963) Jackson core released a new version that automated updates is now updating to, updating the fixtures to keep the tests passing. --- cmd/osv-scanner/__snapshots__/update_test.snap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/osv-scanner/__snapshots__/update_test.snap b/cmd/osv-scanner/__snapshots__/update_test.snap index 81b86ccc92f..3336c746ce3 100755 --- a/cmd/osv-scanner/__snapshots__/update_test.snap +++ b/cmd/osv-scanner/__snapshots__/update_test.snap @@ -34,7 +34,7 @@ Warning: `update` exists as both a subcommand of OSV-Scanner and as a file on th com.fasterxml.jackson.core jackson-core - 2.17.0 + 2.17.1 junit From d34afea8780bcdaa3ac6d2c004441b80ade79191 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 6 May 2024 02:31:08 +0200 Subject: [PATCH 21/68] chore(deps): lock file maintenance (#962) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Update | Change | |---|---| | lockFileMaintenance | All locks refreshed | 🔧 This Pull Request updates lock files to use the latest dependency versions. --- ### Configuration 📅 **Schedule**: Branch creation - "before 4am on monday" in timezone Australia/Sydney, Automerge - At any time (no schedule defined). đŸšĻ **Automerge**: Disabled by config. Please merge this manually once you are satisfied. â™ģ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. đŸ‘ģ **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/google/osv-scanner). Co-authored-by: Rex P <106129829+another-rex@users.noreply.github.com> --- docs/Gemfile.lock | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock index f767755680a..7911e6e86fc 100644 --- a/docs/Gemfile.lock +++ b/docs/Gemfile.lock @@ -1,7 +1,7 @@ GEM remote: https://rubygems.org/ specs: - activesupport (7.1.3) + activesupport (7.1.3.2) base64 bigdecimal concurrent-ruby (~> 1.0, >= 1.0.2) @@ -14,7 +14,7 @@ GEM addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) base64 (0.2.0) - bigdecimal (3.1.6) + bigdecimal (3.1.7) coffee-script (2.4.1) coffee-script-source execjs @@ -23,10 +23,9 @@ GEM commonmarker (0.23.10) concurrent-ruby (1.2.3) connection_pool (2.4.1) - dnsruby (1.70.0) + dnsruby (1.72.1) simpleidn (~> 0.2.1) - drb (2.2.0) - ruby2_keywords + drb (2.2.1) em-websocket (0.5.3) eventmachine (>= 0.12.9) http_parser.rb (~> 0) @@ -96,7 +95,7 @@ GEM activesupport (>= 2) nokogiri (>= 1.4) http_parser.rb (0.8.0) - i18n (1.14.1) + i18n (1.14.4) concurrent-ruby (~> 1.0) jekyll (3.9.5) addressable (~> 2.4) @@ -211,7 +210,7 @@ GEM kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) liquid (4.0.4) - listen (3.8.0) + listen (3.9.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.3.6) @@ -219,25 +218,24 @@ GEM jekyll (>= 3.5, < 5.0) jekyll-feed (~> 0.9) jekyll-seo-tag (~> 2.1) - minitest (5.22.2) + minitest (5.22.3) mutex_m (0.2.0) net-http (0.4.1) uri - nokogiri (1.16.2-x86_64-linux) + nokogiri (1.16.4-x86_64-linux) racc (~> 1.4) octokit (4.25.1) faraday (>= 1, < 3) sawyer (~> 0.9) pathutil (0.16.2) forwardable-extended (~> 2.6) - public_suffix (5.0.4) + public_suffix (5.0.5) racc (1.7.3) rb-fsevent (0.11.2) rb-inotify (0.10.1) ffi (~> 1.0) rexml (3.2.6) rouge (3.30.0) - ruby2_keywords (0.0.5) rubyzip (2.3.2) safe_yaml (1.0.5) sass (3.7.4) @@ -248,7 +246,7 @@ GEM sawyer (0.9.2) addressable (>= 2.3.5) faraday (>= 0.17.3, < 3) - simpleidn (0.2.1) + simpleidn (0.2.2) unf (~> 0.1.4) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) From f0cd900a5f9e1695f7af12b271fdbdaef90e77b4 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 6 May 2024 03:16:53 +0200 Subject: [PATCH 22/68] fix(deps): update osv-scanner minor (#945) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [deps.dev/api/v3](https://togithub.com/google/deps.dev) | `v3.0.0-20240411010756-f6f382da6e02` -> `v3.0.0-20240503042720-6166138ce783` | [![age](https://developer.mend.io/api/mc/badges/age/go/deps.dev%2fapi%2fv3/v3.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/deps.dev%2fapi%2fv3/v3.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/deps.dev%2fapi%2fv3/v3.0.0-20240411010756-f6f382da6e02/v3.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/deps.dev%2fapi%2fv3/v3.0.0-20240411010756-f6f382da6e02/v3.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [deps.dev/util/maven](https://togithub.com/google/deps.dev) | `v0.0.0-20240411010756-f6f382da6e02` -> `v0.0.0-20240503042720-6166138ce783` | [![age](https://developer.mend.io/api/mc/badges/age/go/deps.dev%2futil%2fmaven/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/deps.dev%2futil%2fmaven/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/deps.dev%2futil%2fmaven/v0.0.0-20240411010756-f6f382da6e02/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/deps.dev%2futil%2fmaven/v0.0.0-20240411010756-f6f382da6e02/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [deps.dev/util/resolve](https://togithub.com/google/deps.dev) | `v0.0.0-20240411010756-f6f382da6e02` -> `v0.0.0-20240503042720-6166138ce783` | [![age](https://developer.mend.io/api/mc/badges/age/go/deps.dev%2futil%2fresolve/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/deps.dev%2futil%2fresolve/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/deps.dev%2futil%2fresolve/v0.0.0-20240411010756-f6f382da6e02/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/deps.dev%2futil%2fresolve/v0.0.0-20240411010756-f6f382da6e02/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [deps.dev/util/semver](https://togithub.com/google/deps.dev) | `v0.0.0-20240411010756-f6f382da6e02` -> `v0.0.0-20240503042720-6166138ce783` | [![age](https://developer.mend.io/api/mc/badges/age/go/deps.dev%2futil%2fsemver/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/deps.dev%2futil%2fsemver/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/deps.dev%2futil%2fsemver/v0.0.0-20240411010756-f6f382da6e02/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/deps.dev%2futil%2fsemver/v0.0.0-20240411010756-f6f382da6e02/v0.0.0-20240503042720-6166138ce783?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [github.com/charmbracelet/bubbletea](https://togithub.com/charmbracelet/bubbletea) | `v0.25.0` -> `v0.26.1` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fcharmbracelet%2fbubbletea/v0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fcharmbracelet%2fbubbletea/v0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fcharmbracelet%2fbubbletea/v0.25.0/v0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fcharmbracelet%2fbubbletea/v0.25.0/v0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [github.com/gkampitakis/go-snaps](https://togithub.com/gkampitakis/go-snaps) | `v0.5.3` -> `v0.5.4` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgkampitakis%2fgo-snaps/v0.5.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fgkampitakis%2fgo-snaps/v0.5.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fgkampitakis%2fgo-snaps/v0.5.3/v0.5.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgkampitakis%2fgo-snaps/v0.5.3/v0.5.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [github.com/jedib0t/go-pretty/v6](https://togithub.com/jedib0t/go-pretty) | `v6.5.8` -> `v6.5.9` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fjedib0t%2fgo-pretty%2fv6/v6.5.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fjedib0t%2fgo-pretty%2fv6/v6.5.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fjedib0t%2fgo-pretty%2fv6/v6.5.8/v6.5.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fjedib0t%2fgo-pretty%2fv6/v6.5.8/v6.5.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [github.com/urfave/cli/v2](https://togithub.com/urfave/cli) | `v2.27.1` -> `v2.27.2` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2furfave%2fcli%2fv2/v2.27.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2furfave%2fcli%2fv2/v2.27.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2furfave%2fcli%2fv2/v2.27.1/v2.27.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2furfave%2fcli%2fv2/v2.27.1/v2.27.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | golang.org/x/term | `v0.19.0` -> `v0.20.0` | [![age](https://developer.mend.io/api/mc/badges/age/go/golang.org%2fx%2fterm/v0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/golang.org%2fx%2fterm/v0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/golang.org%2fx%2fterm/v0.19.0/v0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/golang.org%2fx%2fterm/v0.19.0/v0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [google.golang.org/protobuf](https://togithub.com/protocolbuffers/protobuf-go) | `v1.33.0` -> `v1.34.0` | [![age](https://developer.mend.io/api/mc/badges/age/go/google.golang.org%2fprotobuf/v1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/google.golang.org%2fprotobuf/v1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/google.golang.org%2fprotobuf/v1.33.0/v1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/google.golang.org%2fprotobuf/v1.33.0/v1.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes

charmbracelet/bubbletea (github.com/charmbracelet/bubbletea) ### [`v0.26.1`](https://togithub.com/charmbracelet/bubbletea/releases/tag/v0.26.1) [Compare Source](https://togithub.com/charmbracelet/bubbletea/compare/v0.26.0...v0.26.1) This is a quick one to fix a Windows shortcoming in the last release acutely identified by our pal [@​jon4hz](https://togithub.com/jon4hz). Thank you! #### What's Changed - fix: support more shift and ctrl modifiers on windows by [@​jon4hz](https://togithub.com/jon4hz) in [https://github.com/charmbracelet/bubbletea/pull/995](https://togithub.com/charmbracelet/bubbletea/pull/995) **Full Changelog**: https://github.com/charmbracelet/bubbletea/compare/v0.26.0...v0.26.1 *** The Charm logo Thoughts? Questions? We love hearing from you. Feel free to reach out on [Twitter](https://twitter.com/charmcli), [The Fediverse](https://mastodon.social/@​charmcli), or [Discord](https://charm.sh/chat). ### [`v0.26.0`](https://togithub.com/charmbracelet/bubbletea/releases/tag/v0.26.0) [Compare Source](https://togithub.com/charmbracelet/bubbletea/compare/v0.25.0...v0.26.0) ### Bracketed Paste, Windows Improvements, Mainframes, and more What do tapioca balls, IBM mainframes, and the Microsoft Windows Console API have in common? Bubble Tea v0.26.0, that’s what. Let’s get to it. #### ⚡ī¸ Windows Input Improvements A few years ago [@​erikgeiser](https://togithub.com/erikgeiser), a penetration tester and ex-particle physicist, wrote this awesome library called [coninput](https://togithub.com/erikgeiser/coninput) to majorly improve Bubble Tea input on Windows. [@​aymanbagabas](https://togithub.com/aymanbagabas) has implemented the library in Bubble Tea and input on Windows is roughly 1000 times better now. In the short term, this means that for Windows users inputting non-Latin characters (like Greek, Cyrillic, Korean, Chinese and so on) stuff will “just work.” The bigger news, however, is that this paves the way for Windows parity with our forthcoming support for super high fidelity input via [Kitty Keyboard](https://sw.kovidgoyal.net/kitty/keyboard-protocol/) and [Fixterms](https://www.leonerd.org.uk/hacks/fixterms/). #### đŸŗ Hot Windows Resize Events Terminal emulators on Windows don’t support the `SIGWINCH` signal, which is sent when the terminal is resized. It’s been a huge bummer for a really long time. Thanks (again) to [@​erikgeiser](https://togithub.com/erikgeiser) and [@​aymanbagabas](https://togithub.com/aymanbagabas), we’re now able to reach deep into Windows’ underpinnings, detect window resizes, and send [`tea.WindowSizeMsg`](https://pkg.go.dev/github.com/charmbracelet/bubbletea@v0.26.0#WindowSizeMsg)s accordingly! This is a glorious moment for Bubble Tea on Windows indeed. #### đŸĢ  Bracketed Paste While building a query editor for a CockroachDB client, [@​knz](https://togithub.com/knz) noticed that Bubble Tea didn't support [Bracketed Paste](https://cirw.in/blog/bracketed-paste). Performance-wise, that sucks because it means pasting large bodies of text (like SQL queries) will normally be seen as a bunch of little successive keypresses. That’s where Bracketed Paste comes in. When enabled at the terminal-level Bracketed Paste lets you slam down a bunch of text with one big, fat input event. Bubble Tea enables bracketed paste by default, however you can opt out of it with the [`WithoutBracketedPaste()`](https://pkg.go.dev/github.com/charmbracelet/bubbletea@v0.26.0#WithoutBracketedPaste) program option: ```go p := tea.NewProgram(myCuteModel, tea.WithoutBracketedPaste()) ``` You can also enable and disable it on demand with the [`EnableBracketedPaste()`](https://pkg.go.dev/github.com/charmbracelet/bubbletea@v0.26.0#EnableBracketedPaste) and [`DisableBracketedPaste()`](https://pkg.go.dev/github.com/charmbracelet/bubbletea@v0.26.0#DisableBracketedPaste) commands. #### đŸŒŋ Multiline `tea.Println` In case you forgot, [`tea.Println`](https://pkg.go.dev/github.com/charmbracelet/bubbletea@v0.26.0#Println) (and it’s brother [`tea.Printf`](https://pkg.go.dev/github.com/charmbracelet/bubbletea@v0.26.0#Printf)) is a `Cmd` that lets you print unmanaged output above a Bubble Tea program, similar to what you see with package managers like `apt-get`. Thanks to [@​Adjective-Object](https://togithub.com/Adjective-Object) (who also implemented `tea.Println` in the first place) now you can send multi-line output, too. For a `tea.Println` refresher see [the package manager example](https://togithub.com/charmbracelet/bubbletea/tree/master/examples/package-manager). #### 📀 Hello, z/OS Don’t you think it’s about time we all ran Bubble Tea apps on our mainframes? Thanks to [@​dustin-ward](https://togithub.com/dustin-ward) that dream is now a reality, so long as you have a [z/OS](https://www.ibm.com/products/zos) mainframe. We're thrilled to announce that Bubble Tea is now fully supported on z/OS. #### 🌹 Bug fixes Bugfixes are the unsung heroes that sometimes get buried below the feature listings. This release has them and they’re good ones; see the changelog below for details. #### Changelog ##### New! - bracketed paste by [@​knz](https://togithub.com/knz) in [https://github.com/charmbracelet/bubbletea/pull/397](https://togithub.com/charmbracelet/bubbletea/pull/397) - use windows console input buffer + resize events on windows by [@​aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/bubbletea/pull/878](https://togithub.com/charmbracelet/bubbletea/pull/878) - multiline `tea.Println()` messages by [@​Adjective-Object](https://togithub.com/Adjective-Object) in [https://github.com/charmbracelet/bubbletea/pull/490](https://togithub.com/charmbracelet/bubbletea/pull/490) - z/OS support by [@​dustin-ward](https://togithub.com/dustin-ward) in [https://github.com/charmbracelet/bubbletea/pull/913](https://togithub.com/charmbracelet/bubbletea/pull/913) ##### Changed - use go 1.18; update bubbles by [@​caarlos0](https://togithub.com/caarlos0) in [https://github.com/charmbracelet/bubbletea/pull/916](https://togithub.com/charmbracelet/bubbletea/pull/916) ##### Fixed - fix deadlock condition on model init panic by [@​eolso](https://togithub.com/eolso) in [https://github.com/charmbracelet/bubbletea/pull/926](https://togithub.com/charmbracelet/bubbletea/pull/926) - reduce console/term dependencies by [@​aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/bubbletea/pull/897](https://togithub.com/charmbracelet/bubbletea/pull/897) - optimize batches with one item by [@​systay](https://togithub.com/systay) in [https://github.com/charmbracelet/bubbletea/pull/875](https://togithub.com/charmbracelet/bubbletea/pull/875) ##### New Contributors - [@​kevgo](https://togithub.com/kevgo) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/893](https://togithub.com/charmbracelet/bubbletea/pull/893) - [@​canack](https://togithub.com/canack) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/890](https://togithub.com/charmbracelet/bubbletea/pull/890) - [@​Pheon-Dev](https://togithub.com/Pheon-Dev) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/621](https://togithub.com/charmbracelet/bubbletea/pull/621) - [@​rusinikita](https://togithub.com/rusinikita) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/835](https://togithub.com/charmbracelet/bubbletea/pull/835) - [@​hedhyw](https://togithub.com/hedhyw) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/864](https://togithub.com/charmbracelet/bubbletea/pull/864) - [@​mat2cc](https://togithub.com/mat2cc) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/871](https://togithub.com/charmbracelet/bubbletea/pull/871) - [@​stefanlogue](https://togithub.com/stefanlogue) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/855](https://togithub.com/charmbracelet/bubbletea/pull/855) - [@​BigJk](https://togithub.com/BigJk) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/885](https://togithub.com/charmbracelet/bubbletea/pull/885) - [@​sharunkumar](https://togithub.com/sharunkumar) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/839](https://togithub.com/charmbracelet/bubbletea/pull/839) - [@​timmattison](https://togithub.com/timmattison) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/908](https://togithub.com/charmbracelet/bubbletea/pull/908) - [@​dustin-ward](https://togithub.com/dustin-ward) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/913](https://togithub.com/charmbracelet/bubbletea/pull/913) - [@​jaymorelli96](https://togithub.com/jaymorelli96) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/802](https://togithub.com/charmbracelet/bubbletea/pull/802) - [@​siddhantac](https://togithub.com/siddhantac) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/906](https://togithub.com/charmbracelet/bubbletea/pull/906) - [@​taigrr](https://togithub.com/taigrr) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/853](https://togithub.com/charmbracelet/bubbletea/pull/853) - [@​systay](https://togithub.com/systay) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/875](https://togithub.com/charmbracelet/bubbletea/pull/875) - [@​gabe565](https://togithub.com/gabe565) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/728](https://togithub.com/charmbracelet/bubbletea/pull/728) - [@​zMoooooritz](https://togithub.com/zMoooooritz) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/902](https://togithub.com/charmbracelet/bubbletea/pull/902) - [@​j178](https://togithub.com/j178) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/709](https://togithub.com/charmbracelet/bubbletea/pull/709) - [@​arisnacg](https://togithub.com/arisnacg) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/948](https://togithub.com/charmbracelet/bubbletea/pull/948) - [@​braheezy](https://togithub.com/braheezy) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/950](https://togithub.com/charmbracelet/bubbletea/pull/950) - [@​dhth](https://togithub.com/dhth) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/949](https://togithub.com/charmbracelet/bubbletea/pull/949) - [@​tearingItUp786](https://togithub.com/tearingItUp786) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/944](https://togithub.com/charmbracelet/bubbletea/pull/944) - [@​aschey](https://togithub.com/aschey) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/597](https://togithub.com/charmbracelet/bubbletea/pull/597) - [@​petergloor](https://togithub.com/petergloor) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/955](https://togithub.com/charmbracelet/bubbletea/pull/955) - [@​kaifulee](https://togithub.com/kaifulee) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/957](https://togithub.com/charmbracelet/bubbletea/pull/957) - [@​danenania](https://togithub.com/danenania) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/971](https://togithub.com/charmbracelet/bubbletea/pull/971) - [@​cuibuwei](https://togithub.com/cuibuwei) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/977](https://togithub.com/charmbracelet/bubbletea/pull/977) - [@​agvxov](https://togithub.com/agvxov) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/972](https://togithub.com/charmbracelet/bubbletea/pull/972) - [@​eolso](https://togithub.com/eolso) made their first contribution in [https://github.com/charmbracelet/bubbletea/pull/926](https://togithub.com/charmbracelet/bubbletea/pull/926) **Full Changelog**: https://github.com/charmbracelet/bubbletea/compare/v0.25.0...v0.25.1 *** The Charm logo Thoughts? Questions? We love hearing from you. Feel free to reach out on [Twitter](https://twitter.com/charmcli), [The Fediverse](https://mastodon.social/@​charmcli), or [Discord](https://charm.sh/chat).
gkampitakis/go-snaps (github.com/gkampitakis/go-snaps) ### [`v0.5.4`](https://togithub.com/gkampitakis/go-snaps/releases/tag/v0.5.4) [Compare Source](https://togithub.com/gkampitakis/go-snaps/compare/v0.5.3...v0.5.4) #### What's Changed - fix: slice bounds out of range \[:5] by [@​zregvart](https://togithub.com/zregvart) in [https://github.com/gkampitakis/go-snaps/pull/98](https://togithub.com/gkampitakis/go-snaps/pull/98) #### New Contributors - [@​zregvart](https://togithub.com/zregvart) made their first contribution in [https://github.com/gkampitakis/go-snaps/pull/98](https://togithub.com/gkampitakis/go-snaps/pull/98) **Full Changelog**: https://github.com/gkampitakis/go-snaps/compare/v0.5.3...v0.5.4
jedib0t/go-pretty (github.com/jedib0t/go-pretty/v6) ### [`v6.5.9`](https://togithub.com/jedib0t/go-pretty/releases/tag/v6.5.9) [Compare Source](https://togithub.com/jedib0t/go-pretty/compare/v6.5.8...v6.5.9) #### What's Changed - table: html row automerge support by [@​hindessm](https://togithub.com/hindessm) in [https://github.com/jedib0t/go-pretty/pull/319](https://togithub.com/jedib0t/go-pretty/pull/319) - table: update note about auto-merge by [@​hindessm](https://togithub.com/hindessm) in [https://github.com/jedib0t/go-pretty/pull/320](https://togithub.com/jedib0t/go-pretty/pull/320) #### New Contributors - [@​hindessm](https://togithub.com/hindessm) made their first contribution in [https://github.com/jedib0t/go-pretty/pull/319](https://togithub.com/jedib0t/go-pretty/pull/319) **Full Changelog**: https://github.com/jedib0t/go-pretty/compare/v6.5.8...v6.5.9
urfave/cli (github.com/urfave/cli/v2) ### [`v2.27.2`](https://togithub.com/urfave/cli/releases/tag/v2.27.2) [Compare Source](https://togithub.com/urfave/cli/compare/v2.27.1...v2.27.2) #### What's Changed - Cleanup: Remove unnecessary intermediate variables by [@​1ambd4](https://togithub.com/1ambd4) in [https://github.com/urfave/cli/pull/1857](https://togithub.com/urfave/cli/pull/1857) - Docs:(issue\_1866) Fix documentation on filepath vs env preference by [@​dearchap](https://togithub.com/dearchap) in [https://github.com/urfave/cli/pull/1867](https://togithub.com/urfave/cli/pull/1867) - Fix:(issue\_1860) Remove hidden flags from flag categories by [@​dearchap](https://togithub.com/dearchap) in [https://github.com/urfave/cli/pull/1868](https://togithub.com/urfave/cli/pull/1868) - Fix repeated \[arguments...] in usage template in v2 by [@​edeustua](https://togithub.com/edeustua) in [https://github.com/urfave/cli/pull/1872](https://togithub.com/urfave/cli/pull/1872) - Update dependencies, actions steps, and usage for v2-maint by [@​meatballhat](https://togithub.com/meatballhat) in [https://github.com/urfave/cli/pull/1888](https://togithub.com/urfave/cli/pull/1888) #### New Contributors - [@​1ambd4](https://togithub.com/1ambd4) made their first contribution in [https://github.com/urfave/cli/pull/1857](https://togithub.com/urfave/cli/pull/1857) - [@​edeustua](https://togithub.com/edeustua) made their first contribution in [https://github.com/urfave/cli/pull/1872](https://togithub.com/urfave/cli/pull/1872) **Full Changelog**: https://github.com/urfave/cli/compare/v2.27.1...v2.27.2
protocolbuffers/protobuf-go (google.golang.org/protobuf) ### [`v1.34.0`](https://togithub.com/protocolbuffers/protobuf-go/compare/v1.33.0...v1.34.0) [Compare Source](https://togithub.com/protocolbuffers/protobuf-go/compare/v1.33.0...v1.34.0)
--- ### Configuration 📅 **Schedule**: Branch creation - "before 6am on monday" in timezone Australia/Sydney, Automerge - At any time (no schedule defined). đŸšĻ **Automerge**: Disabled by config. Please merge this manually once you are satisfied. â™ģ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. đŸ‘ģ **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/google/osv-scanner). --- go.mod | 28 ++++++++++++++-------------- go.sum | 58 +++++++++++++++++++++++++++++----------------------------- 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/go.mod b/go.mod index 68db5dc8749..72c5c4b3e37 100644 --- a/go.mod +++ b/go.mod @@ -3,24 +3,24 @@ module github.com/google/osv-scanner go 1.21.8 require ( - deps.dev/api/v3 v3.0.0-20240411010756-f6f382da6e02 - deps.dev/util/maven v0.0.0-20240411010756-f6f382da6e02 - deps.dev/util/resolve v0.0.0-20240411010756-f6f382da6e02 - deps.dev/util/semver v0.0.0-20240411010756-f6f382da6e02 + deps.dev/api/v3 v3.0.0-20240503042720-6166138ce783 + deps.dev/util/maven v0.0.0-20240503042720-6166138ce783 + deps.dev/util/resolve v0.0.0-20240503042720-6166138ce783 + deps.dev/util/semver v0.0.0-20240503042720-6166138ce783 github.com/BurntSushi/toml v1.3.2 github.com/CycloneDX/cyclonedx-go v0.8.0 github.com/charmbracelet/bubbles v0.18.0 - github.com/charmbracelet/bubbletea v0.25.0 + github.com/charmbracelet/bubbletea v0.26.1 github.com/charmbracelet/glamour v0.7.0 github.com/charmbracelet/lipgloss v0.10.0 github.com/dghubble/trie v0.1.0 - github.com/gkampitakis/go-snaps v0.5.3 + github.com/gkampitakis/go-snaps v0.5.4 github.com/go-git/go-billy/v5 v5.5.0 github.com/go-git/go-git/v5 v5.12.0 github.com/google/go-cmp v0.6.0 github.com/google/go-containerregistry v0.19.1 github.com/ianlancetaylor/demangle v0.0.0-20240312041847-bd984b5ce465 - github.com/jedib0t/go-pretty/v6 v6.5.8 + github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/muesli/reflow v0.3.0 github.com/owenrumney/go-sarif/v2 v2.3.1 github.com/package-url/packageurl-go v0.1.2 @@ -29,14 +29,14 @@ require ( github.com/tidwall/gjson v1.17.1 github.com/tidwall/pretty v1.2.1 github.com/tidwall/sjson v1.2.5 - github.com/urfave/cli/v2 v2.27.1 + github.com/urfave/cli/v2 v2.27.2 golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f golang.org/x/mod v0.17.0 golang.org/x/sync v0.7.0 - golang.org/x/term v0.19.0 + golang.org/x/term v0.20.0 golang.org/x/vuln v1.0.4 google.golang.org/grpc v1.63.2 - google.golang.org/protobuf v1.33.0 + google.golang.org/protobuf v1.34.0 gopkg.in/ini.v1 v1.67.0 gopkg.in/yaml.v3 v3.0.1 ) @@ -51,9 +51,8 @@ require ( github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/aymerick/douceur v0.2.0 // indirect github.com/cloudflare/circl v1.3.7 // indirect - github.com/containerd/console v1.0.4 // indirect github.com/containerd/stargz-snapshotter/estargz v0.15.1 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/dlclark/regexp2 v1.11.0 // indirect github.com/docker/cli v25.0.3+incompatible // indirect @@ -61,6 +60,7 @@ require ( github.com/docker/docker v25.0.5+incompatible // indirect github.com/docker/docker-credential-helpers v0.8.1 // indirect github.com/emirpasic/gods v1.18.1 // indirect + github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect github.com/gkampitakis/ciinfo v0.3.0 // indirect github.com/gkampitakis/go-diff v1.3.2 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect @@ -96,12 +96,12 @@ require ( github.com/vbatts/tar-split v0.11.5 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect - github.com/xrash/smetrics v0.0.0-20231213231151-1d8dd44e695e // indirect + github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 // indirect github.com/yuin/goldmark v1.7.0 // indirect github.com/yuin/goldmark-emoji v1.0.2 // indirect golang.org/x/crypto v0.22.0 // indirect golang.org/x/net v0.24.0 // indirect - golang.org/x/sys v0.19.0 // indirect + golang.org/x/sys v0.20.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.20.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240304212257-790db918fca8 // indirect diff --git a/go.sum b/go.sum index 9978c57ac9c..bcedfa4bc57 100644 --- a/go.sum +++ b/go.sum @@ -1,13 +1,13 @@ dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= -deps.dev/api/v3 v3.0.0-20240411010756-f6f382da6e02 h1:ygllcnHZYlhWVYdYjZ9G3RnncTaOT8K7dD8B86IC/OA= -deps.dev/api/v3 v3.0.0-20240411010756-f6f382da6e02/go.mod h1:k3RHZwAw7ijqoXmVDvcO7ikeTwTC4jtmhCDathV+IKE= -deps.dev/util/maven v0.0.0-20240411010756-f6f382da6e02 h1:IU9seTEQeiguUPGi7xWb4BKYeaBipctbVnkGnpTNTeQ= -deps.dev/util/maven v0.0.0-20240411010756-f6f382da6e02/go.mod h1:SBW3EribdkZYk6zxi5oVn/ZECvi4ixb7EGgEWfSimNk= -deps.dev/util/resolve v0.0.0-20240411010756-f6f382da6e02 h1:qnSop1qW1PTSHUDyq4nYn/JygjjKrB191HYravpnZ20= -deps.dev/util/resolve v0.0.0-20240411010756-f6f382da6e02/go.mod h1:8JnoxYaxXYJ0gJ9RbNPFgCZFDO/TMNFrHTcRkGApBV0= -deps.dev/util/semver v0.0.0-20240411010756-f6f382da6e02 h1:56t2Bz/U4j13sQPVUT+w9S9T7D4zy7J6W6OICo9L5AI= -deps.dev/util/semver v0.0.0-20240411010756-f6f382da6e02/go.mod h1:jkcH+k02gWHBiZ7G4OnUOkSZ6WDq54Pt5DrOA8FN8Uo= +deps.dev/api/v3 v3.0.0-20240503042720-6166138ce783 h1:ls9MrAHgWyVrhaRw/xGuFc6/oNUR4VYKGWf2ZCAVsjo= +deps.dev/api/v3 v3.0.0-20240503042720-6166138ce783/go.mod h1:DyBY3wNVqRCwvb4tLvz6LL/FupH3FMflEROyQAv2Vi0= +deps.dev/util/maven v0.0.0-20240503042720-6166138ce783 h1:K0a6gNNrsaxLur6iF8aBJOBWw2I+TM8Yw1qc3hCd350= +deps.dev/util/maven v0.0.0-20240503042720-6166138ce783/go.mod h1:SBW3EribdkZYk6zxi5oVn/ZECvi4ixb7EGgEWfSimNk= +deps.dev/util/resolve v0.0.0-20240503042720-6166138ce783 h1:2lj9zIW7RolUergKAlpOk68/OrNcpvrlgAKtSI6rhcc= +deps.dev/util/resolve v0.0.0-20240503042720-6166138ce783/go.mod h1:XXi6yRYqhtxw5DvGX/mbG6fHSLn8OgoPowNd8EAxDgk= +deps.dev/util/semver v0.0.0-20240503042720-6166138ce783 h1:qtNq/VDXItLBFlLePuBEUkhQawlYBlZs+equ7pB93aA= +deps.dev/util/semver v0.0.0-20240503042720-6166138ce783/go.mod h1:jkcH+k02gWHBiZ7G4OnUOkSZ6WDq54Pt5DrOA8FN8Uo= github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/CycloneDX/cyclonedx-go v0.8.0 h1:FyWVj6x6hoJrui5uRQdYZcSievw3Z32Z88uYzG/0D6M= @@ -42,8 +42,8 @@ github.com/bradleyjkemp/cupaloy/v2 v2.8.0/go.mod h1:bm7JXdkRd4BHJk9HpwqAI8BoAY1l github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/charmbracelet/bubbles v0.18.0 h1:PYv1A036luoBGroX6VWjQIE9Syf2Wby2oOl/39KLfy0= github.com/charmbracelet/bubbles v0.18.0/go.mod h1:08qhZhtIwzgrtBjAcJnij1t1H0ZRjwHyGsy6AL11PSw= -github.com/charmbracelet/bubbletea v0.25.0 h1:bAfwk7jRz7FKFl9RzlIULPkStffg5k6pNt5dywy4TcM= -github.com/charmbracelet/bubbletea v0.25.0/go.mod h1:EN3QDR1T5ZdWmdfDzYcqOCAps45+QIJbLOBxmVNWNNg= +github.com/charmbracelet/bubbletea v0.26.1 h1:xujcQeF73rh4jwu3+zhfQsvV18x+7zIjlw7/CYbzGJ0= +github.com/charmbracelet/bubbletea v0.26.1/go.mod h1:FzKr7sKoO8iFVcdIBM9J0sJOcQv5nDQaYwsee3kpbgo= github.com/charmbracelet/glamour v0.7.0 h1:2BtKGZ4iVJCDfMF229EzbeR1QRKLWztO9dMtjmqZSng= github.com/charmbracelet/glamour v0.7.0/go.mod h1:jUMh5MeihljJPQbJ/wf4ldw2+yBP59+ctV36jASy7ps= github.com/charmbracelet/lipgloss v0.10.0 h1:KWeXFSexGcfahHX+54URiZGkBFazf70JNMtwg/AFW3s= @@ -51,12 +51,10 @@ github.com/charmbracelet/lipgloss v0.10.0/go.mod h1:Wig9DSfvANsxqkRsqj6x87irdy12 github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= -github.com/containerd/console v1.0.4 h1:F2g4+oChYvBTsASRTz8NP6iIAi97J3TtSAsLbIFn4ro= -github.com/containerd/console v1.0.4/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/containerd/stargz-snapshotter/estargz v0.15.1 h1:eXJjw9RbkLFgioVaTG+G/ZW/0kEe2oEKCdS/ZxIyoCU= github.com/containerd/stargz-snapshotter/estargz v0.15.1/go.mod h1:gr2RNwukQ/S9Nv33Lt6UC7xEx58C+LHRdoqbEKjz1Kk= -github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= -github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= @@ -79,12 +77,14 @@ github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcej github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= +github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4= +github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM= github.com/gkampitakis/ciinfo v0.3.0 h1:gWZlOC2+RYYttL0hBqcoQhM7h1qNkVqvRCV1fOvpAv8= github.com/gkampitakis/ciinfo v0.3.0/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= -github.com/gkampitakis/go-snaps v0.5.3 h1:2cJnBgHzJhh0Jk5XBIyDYDe1Ylfncoa9r9bVJ5qvOAE= -github.com/gkampitakis/go-snaps v0.5.3/go.mod h1:ZABkO14uCuVxBHAXAfKG+bqNz+aa1bGPAg8jkI0Nk8Y= +github.com/gkampitakis/go-snaps v0.5.4 h1:GX+dkKmVsRenz7SoTbdIEL4KQARZctkMiZ8ZKprRwT8= +github.com/gkampitakis/go-snaps v0.5.4/go.mod h1:ZABkO14uCuVxBHAXAfKG+bqNz+aa1bGPAg8jkI0Nk8Y= github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= @@ -113,8 +113,8 @@ github.com/ianlancetaylor/demangle v0.0.0-20240312041847-bd984b5ce465 h1:KwWnWVW github.com/ianlancetaylor/demangle v0.0.0-20240312041847-bd984b5ce465/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/jedib0t/go-pretty/v6 v6.5.8 h1:8BCzJdSvUbaDuRba4YVh+SKMGcAAKdkcF3SVFbrHAtQ= -github.com/jedib0t/go-pretty/v6 v6.5.8/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= +github.com/jedib0t/go-pretty/v6 v6.5.9 h1:ACteMBRrrmm1gMsXe9PSTOClQ63IXDUt03H5U+UV8OU= +github.com/jedib0t/go-pretty/v6 v6.5.9/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= @@ -221,8 +221,8 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= -github.com/urfave/cli/v2 v2.27.1 h1:8xSQ6szndafKVRmfyeUMxkNUJQMjL1F2zmsZ+qHpfho= -github.com/urfave/cli/v2 v2.27.1/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= +github.com/urfave/cli/v2 v2.27.2 h1:6e0H+AkS+zDckwPCUrZkKX38mRaau4nL2uipkJpbkcI= +github.com/urfave/cli/v2 v2.27.2/go.mod h1:g0+79LmHHATl7DAcHO99smiR/T7uGLw84w8Y42x+4eM= github.com/vbatts/tar-split v0.11.5 h1:3bHCTIheBm1qFTcgh9oPu+nNBtX+XJIupG/vacinCts= github.com/vbatts/tar-split v0.11.5/go.mod h1:yZbwRsSeGjusneWgA781EKej9HF8vme8okylkAeNKLk= github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= @@ -235,8 +235,8 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHo github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xrash/smetrics v0.0.0-20231213231151-1d8dd44e695e h1:+SOyEddqYF09QP7vr7CgJ1eti3pY9Fn3LHO1M1r/0sI= -github.com/xrash/smetrics v0.0.0-20231213231151-1d8dd44e695e/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= +github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 h1:+qGGcbkzsfDQNPPe9UDgpxAWQrhbbBXOYJFQDq/dtJw= +github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913/go.mod h1:4aEEwZQutDLsQv2Deui4iYQ6DWTxR14g6m8Wv88+Xqk= github.com/yuin/goldmark v1.3.7/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/goldmark v1.7.0 h1:EfOIvIMZIzHdB/R/zVrikYLPPwJlfMcNczJFMs1m6sA= @@ -279,23 +279,23 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= -golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= -golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= +golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -323,8 +323,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20240304212257-790db918fca8 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20240304212257-790db918fca8/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs= google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.0 h1:Qo/qEd2RZPCf2nKuorzksSknv0d3ERwp1vFG38gSmH4= +google.golang.org/protobuf v1.34.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 57578ab37a0ebba1b2cf3f8cf58fa662aa6e53e0 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 6 May 2024 03:37:52 +0200 Subject: [PATCH 23/68] chore(deps): update workflows (#935) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/checkout](https://togithub.com/actions/checkout) | action | patch | `v4.1.1` -> `v4.1.4` | | [actions/download-artifact](https://togithub.com/actions/download-artifact) | action | patch | `v4.1.4` -> `v4.1.7` | | [actions/setup-go](https://togithub.com/actions/setup-go) | action | patch | `v5.0.0` -> `v5.0.1` | | [actions/upload-artifact](https://togithub.com/actions/upload-artifact) | action | patch | `v4.3.1` -> `v4.3.3` | | [codecov/codecov-action](https://togithub.com/codecov/codecov-action) | action | patch | `v4.3.0` -> `v4.3.1` | | [github/codeql-action](https://togithub.com/github/codeql-action) | action | minor | `v3.24.10` -> `v3.25.3` | | [golangci/golangci-lint-action](https://togithub.com/golangci/golangci-lint-action) | action | patch | `v4.0.0` -> `v4.0.1` | --- ### Release Notes
actions/checkout (actions/checkout) ### [`v4.1.4`](https://togithub.com/actions/checkout/blob/HEAD/CHANGELOG.md#v414) [Compare Source](https://togithub.com/actions/checkout/compare/v4.1.3...v4.1.4) - Disable `extensions.worktreeConfig` when disabling `sparse-checkout` by [@​jww3](https://togithub.com/jww3) in [https://github.com/actions/checkout/pull/1692](https://togithub.com/actions/checkout/pull/1692) - Add dependabot config by [@​cory-miller](https://togithub.com/cory-miller) in [https://github.com/actions/checkout/pull/1688](https://togithub.com/actions/checkout/pull/1688) - Bump the minor-actions-dependencies group with 2 updates by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/actions/checkout/pull/1693](https://togithub.com/actions/checkout/pull/1693) - Bump word-wrap from 1.2.3 to 1.2.5 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/actions/checkout/pull/1643](https://togithub.com/actions/checkout/pull/1643) ### [`v4.1.3`](https://togithub.com/actions/checkout/releases/tag/v4.1.3) [Compare Source](https://togithub.com/actions/checkout/compare/v4.1.2...v4.1.3) #### What's Changed - Update `actions/checkout` version in `update-main-version.yml` by [@​jww3](https://togithub.com/jww3) in [https://github.com/actions/checkout/pull/1650](https://togithub.com/actions/checkout/pull/1650) - Check git version before attempting to disable `sparse-checkout` by [@​jww3](https://togithub.com/jww3) in [https://github.com/actions/checkout/pull/1656](https://togithub.com/actions/checkout/pull/1656) - Add SSH user parameter by [@​cory-miller](https://togithub.com/cory-miller) in [https://github.com/actions/checkout/pull/1685](https://togithub.com/actions/checkout/pull/1685) **Full Changelog**: https://github.com/actions/checkout/compare/v4.1.2...v4.1.3 ### [`v4.1.2`](https://togithub.com/actions/checkout/blob/HEAD/CHANGELOG.md#v412) [Compare Source](https://togithub.com/actions/checkout/compare/v4.1.1...v4.1.2) - Fix: Disable sparse checkout whenever `sparse-checkout` option is not present [@​dscho](https://togithub.com/dscho) in [https://github.com/actions/checkout/pull/1598](https://togithub.com/actions/checkout/pull/1598)
actions/download-artifact (actions/download-artifact) ### [`v4.1.7`](https://togithub.com/actions/download-artifact/releases/tag/v4.1.7) [Compare Source](https://togithub.com/actions/download-artifact/compare/v4.1.6...v4.1.7) #### What's Changed - Update [@​actions/artifact](https://togithub.com/actions/artifact) dependency by [@​bethanyj28](https://togithub.com/bethanyj28) in [https://github.com/actions/download-artifact/pull/325](https://togithub.com/actions/download-artifact/pull/325) **Full Changelog**: https://github.com/actions/download-artifact/compare/v4.1.6...v4.1.7 ### [`v4.1.6`](https://togithub.com/actions/download-artifact/releases/tag/v4.1.6) [Compare Source](https://togithub.com/actions/download-artifact/compare/v4.1.5...v4.1.6) #### What's Changed - updating `@actions/artifact` dependency to v2.1.6 by [@​eggyhead](https://togithub.com/eggyhead) in [https://github.com/actions/download-artifact/pull/324](https://togithub.com/actions/download-artifact/pull/324) **Full Changelog**: https://github.com/actions/download-artifact/compare/v4.1.5...v4.1.6 ### [`v4.1.5`](https://togithub.com/actions/download-artifact/releases/tag/v4.1.5) [Compare Source](https://togithub.com/actions/download-artifact/compare/v4.1.4...v4.1.5) #### What's Changed - Update readme with v3/v2/v1 deprecation notice by [@​robherley](https://togithub.com/robherley) in [https://github.com/actions/download-artifact/pull/322](https://togithub.com/actions/download-artifact/pull/322) - Update dependencies `@actions/core` to v1.10.1 and `@actions/artifact` to v2.1.5 **Full Changelog**: https://github.com/actions/download-artifact/compare/v4.1.4...v4.1.5
actions/setup-go (actions/setup-go) ### [`v5.0.1`](https://togithub.com/actions/setup-go/releases/tag/v5.0.1) [Compare Source](https://togithub.com/actions/setup-go/compare/v5.0.0...v5.0.1) #### What's Changed - Bump undici from 5.28.2 to 5.28.3 and dependencies upgrade by [@​dependabot](https://togithub.com/dependabot) , [@​HarithaVattikuti](https://togithub.com/HarithaVattikuti) in [https://github.com/actions/setup-go/pull/465](https://togithub.com/actions/setup-go/pull/465) - Update documentation with latest V5 release notes by [@​ab](https://togithub.com/ab) in [https://github.com/actions/setup-go/pull/459](https://togithub.com/actions/setup-go/pull/459) - Update version documentation by [@​178inaba](https://togithub.com/178inaba) in [https://github.com/actions/setup-go/pull/458](https://togithub.com/actions/setup-go/pull/458) - Documentation update of `actions/setup-go` to v5 by [@​chenrui333](https://togithub.com/chenrui333) in [https://github.com/actions/setup-go/pull/449](https://togithub.com/actions/setup-go/pull/449) #### New Contributors - [@​ab](https://togithub.com/ab) made their first contribution in [https://github.com/actions/setup-go/pull/459](https://togithub.com/actions/setup-go/pull/459) **Full Changelog**: https://github.com/actions/setup-go/compare/v5.0.0...v5.0.1
actions/upload-artifact (actions/upload-artifact) ### [`v4.3.3`](https://togithub.com/actions/upload-artifact/releases/tag/v4.3.3) [Compare Source](https://togithub.com/actions/upload-artifact/compare/v4.3.2...v4.3.3) ##### What's Changed - updating `@actions/artifact` dependency to v2.1.6 by [@​eggyhead](https://togithub.com/eggyhead) in [https://github.com/actions/upload-artifact/pull/565](https://togithub.com/actions/upload-artifact/pull/565) **Full Changelog**: https://github.com/actions/upload-artifact/compare/v4.3.2...v4.3.3 ### [`v4.3.2`](https://togithub.com/actions/upload-artifact/releases/tag/v4.3.2) [Compare Source](https://togithub.com/actions/upload-artifact/compare/v4.3.1...v4.3.2) #### What's Changed - Update release-new-action-version.yml by [@​konradpabjan](https://togithub.com/konradpabjan) in [https://github.com/actions/upload-artifact/pull/516](https://togithub.com/actions/upload-artifact/pull/516) - Minor fix to the migration readme by [@​andrewakim](https://togithub.com/andrewakim) in [https://github.com/actions/upload-artifact/pull/523](https://togithub.com/actions/upload-artifact/pull/523) - Update readme with v3/v2/v1 deprecation notice by [@​robherley](https://togithub.com/robherley) in [https://github.com/actions/upload-artifact/pull/561](https://togithub.com/actions/upload-artifact/pull/561) - updating `@actions/artifact` dependency to v2.1.5 and `@actions/core` to v1.0.1 by [@​eggyhead](https://togithub.com/eggyhead) in [https://github.com/actions/upload-artifact/pull/562](https://togithub.com/actions/upload-artifact/pull/562) #### New Contributors - [@​andrewakim](https://togithub.com/andrewakim) made their first contribution in [https://github.com/actions/upload-artifact/pull/523](https://togithub.com/actions/upload-artifact/pull/523) **Full Changelog**: https://github.com/actions/upload-artifact/compare/v4.3.1...v4.3.2
codecov/codecov-action (codecov/codecov-action) ### [`v4.3.1`](https://togithub.com/codecov/codecov-action/compare/v4.3.0...v4.3.1) [Compare Source](https://togithub.com/codecov/codecov-action/compare/v4.3.0...v4.3.1)
github/codeql-action (github/codeql-action) ### [`v3.25.3`](https://togithub.com/github/codeql-action/compare/v3.25.2...v3.25.3) [Compare Source](https://togithub.com/github/codeql-action/compare/v3.25.2...v3.25.3) ### [`v3.25.2`](https://togithub.com/github/codeql-action/compare/v3.25.1...v3.25.2) [Compare Source](https://togithub.com/github/codeql-action/compare/v3.25.1...v3.25.2) ### [`v3.25.1`](https://togithub.com/github/codeql-action/compare/v3.25.0...v3.25.1) [Compare Source](https://togithub.com/github/codeql-action/compare/v3.25.0...v3.25.1) ### [`v3.25.0`](https://togithub.com/github/codeql-action/compare/v3.24.10...v3.25.0) [Compare Source](https://togithub.com/github/codeql-action/compare/v3.24.10...v3.25.0)
golangci/golangci-lint-action (golangci/golangci-lint-action) ### [`v4.0.1`](https://togithub.com/golangci/golangci-lint-action/releases/tag/v4.0.1) [Compare Source](https://togithub.com/golangci/golangci-lint-action/compare/v4.0.0...v4.0.1) #### What's Changed ##### Documentation - docs: update the version of the action used in the README example by [@​178inaba](https://togithub.com/178inaba) in [https://github.com/golangci/golangci-lint-action/pull/977](https://togithub.com/golangci/golangci-lint-action/pull/977) ##### Dependencies - build(deps): bump [@​types/semver](https://togithub.com/types/semver) from 7.5.6 to 7.5.7 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/969](https://togithub.com/golangci/golangci-lint-action/pull/969) - build(deps-dev): bump [@​typescript-eslint/parser](https://togithub.com/typescript-eslint/parser) from 6.20.0 to 6.21.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/970](https://togithub.com/golangci/golangci-lint-action/pull/970) - build(deps-dev): bump eslint-plugin-simple-import-sort from 10.0.0 to 12.0.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/971](https://togithub.com/golangci/golangci-lint-action/pull/971) - build(deps-dev): bump [@​typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/eslint-plugin) from 6.20.0 to 6.21.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/973](https://togithub.com/golangci/golangci-lint-action/pull/973) - build(deps): bump [@​types/node](https://togithub.com/types/node) from 20.11.16 to 20.11.17 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/972](https://togithub.com/golangci/golangci-lint-action/pull/972) - build(deps): bump [@​types/node](https://togithub.com/types/node) from 20.11.17 to 20.11.19 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/979](https://togithub.com/golangci/golangci-lint-action/pull/979) - build(deps-dev): bump [@​typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/eslint-plugin) from 6.21.0 to 7.0.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/980](https://togithub.com/golangci/golangci-lint-action/pull/980) - build(deps): bump undici from 5.26.3 to 5.28.3 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/976](https://togithub.com/golangci/golangci-lint-action/pull/976) - build(deps): bump [@​types/node](https://togithub.com/types/node) from 20.11.19 to 20.11.20 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/985](https://togithub.com/golangci/golangci-lint-action/pull/985) - build(deps): bump [@​types/semver](https://togithub.com/types/semver) from 7.5.7 to 7.5.8 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/986](https://togithub.com/golangci/golangci-lint-action/pull/986) - build(deps-dev): bump eslint from 8.56.0 to 8.57.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/987](https://togithub.com/golangci/golangci-lint-action/pull/987) - build(deps): bump tmp from 0.2.1 to 0.2.3 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/989](https://togithub.com/golangci/golangci-lint-action/pull/989) - build(deps-dev): bump [@​typescript-eslint/parser](https://togithub.com/typescript-eslint/parser) from 6.21.0 to 7.1.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/988](https://togithub.com/golangci/golangci-lint-action/pull/988) - build(deps): bump [@​types/node](https://togithub.com/types/node) from 20.11.20 to 20.11.24 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/990](https://togithub.com/golangci/golangci-lint-action/pull/990) - build(deps-dev): bump [@​typescript-eslint/parser](https://togithub.com/typescript-eslint/parser) from 7.1.0 to 7.1.1 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/991](https://togithub.com/golangci/golangci-lint-action/pull/991) - build(deps): bump [@​types/node](https://togithub.com/types/node) from 20.11.24 to 20.11.25 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/992](https://togithub.com/golangci/golangci-lint-action/pull/992) - build(deps-dev): bump typescript from 5.3.3 to 5.4.2 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/993](https://togithub.com/golangci/golangci-lint-action/pull/993) - build(deps-dev): bump [@​typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/eslint-plugin) from 7.1.0 to 7.1.1 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/994](https://togithub.com/golangci/golangci-lint-action/pull/994) - build(deps): bump [@​actions/http-client](https://togithub.com/actions/http-client) from 2.2.0 to 2.2.1 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/995](https://togithub.com/golangci/golangci-lint-action/pull/995) - build(deps): bump google.golang.org/protobuf from 1.28.0 to 1.33.0 in /sample-go-mod by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/997](https://togithub.com/golangci/golangci-lint-action/pull/997) - build(deps-dev): bump [@​typescript-eslint/parser](https://togithub.com/typescript-eslint/parser) from 7.1.1 to 7.2.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/998](https://togithub.com/golangci/golangci-lint-action/pull/998) - build(deps): bump [@​types/node](https://togithub.com/types/node) from 20.11.25 to 20.11.28 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/1000](https://togithub.com/golangci/golangci-lint-action/pull/1000) - build(deps-dev): bump [@​typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/eslint-plugin) from 7.1.1 to 7.2.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/999](https://togithub.com/golangci/golangci-lint-action/pull/999) - build(deps-dev): bump [@​typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/eslint-plugin) from 7.2.0 to 7.3.1 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/1003](https://togithub.com/golangci/golangci-lint-action/pull/1003) - build(deps): bump [@​types/node](https://togithub.com/types/node) from 20.11.28 to 20.11.30 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/1004](https://togithub.com/golangci/golangci-lint-action/pull/1004) - build(deps-dev): bump typescript from 5.4.2 to 5.4.3 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/1005](https://togithub.com/golangci/golangci-lint-action/pull/1005) - build(deps-dev): bump [@​typescript-eslint/parser](https://togithub.com/typescript-eslint/parser) from 7.2.0 to 7.3.1 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/1006](https://togithub.com/golangci/golangci-lint-action/pull/1006) - build(deps): bump [@​types/node](https://togithub.com/types/node) from 20.11.30 to 20.12.2 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/1007](https://togithub.com/golangci/golangci-lint-action/pull/1007) - build(deps-dev): bump [@​typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/eslint-plugin) from 7.3.1 to 7.4.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/1008](https://togithub.com/golangci/golangci-lint-action/pull/1008) - build(deps-dev): bump [@​typescript-eslint/parser](https://togithub.com/typescript-eslint/parser) from 7.3.1 to 7.4.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/1009](https://togithub.com/golangci/golangci-lint-action/pull/1009) - build(deps): bump undici from 5.28.3 to 5.28.4 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/1010](https://togithub.com/golangci/golangci-lint-action/pull/1010) - build(deps-dev): bump typescript from 5.4.3 to 5.4.4 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/1011](https://togithub.com/golangci/golangci-lint-action/pull/1011) - build(deps): bump [@​types/node](https://togithub.com/types/node) from 20.12.2 to 20.12.5 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/1012](https://togithub.com/golangci/golangci-lint-action/pull/1012) - build(deps-dev): bump [@​typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/eslint-plugin) from 7.4.0 to 7.5.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/1013](https://togithub.com/golangci/golangci-lint-action/pull/1013) - build(deps-dev): bump [@​typescript-eslint/parser](https://togithub.com/typescript-eslint/parser) from 7.4.0 to 7.5.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/1014](https://togithub.com/golangci/golangci-lint-action/pull/1014) - build(deps): bump [@​types/node](https://togithub.com/types/node) from 20.12.5 to 20.12.7 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/1016](https://togithub.com/golangci/golangci-lint-action/pull/1016) - build(deps-dev): bump typescript from 5.4.4 to 5.4.5 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/1017](https://togithub.com/golangci/golangci-lint-action/pull/1017) - build(deps-dev): bump [@​typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/eslint-plugin) from 7.5.0 to 7.6.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/1019](https://togithub.com/golangci/golangci-lint-action/pull/1019) - build(deps-dev): bump eslint-plugin-simple-import-sort from 12.0.0 to 12.1.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/1018](https://togithub.com/golangci/golangci-lint-action/pull/1018) - build(deps-dev): bump [@​typescript-eslint/parser](https://togithub.com/typescript-eslint/parser) from 7.5.0 to 7.7.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/1022](https://togithub.com/golangci/golangci-lint-action/pull/1022) - build(deps-dev): bump [@​typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/eslint-plugin) from 7.6.0 to 7.7.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/1023](https://togithub.com/golangci/golangci-lint-action/pull/1023) #### New Contributors - [@​178inaba](https://togithub.com/178inaba) made their first contribution in [https://github.com/golangci/golangci-lint-action/pull/977](https://togithub.com/golangci/golangci-lint-action/pull/977) **Full Changelog**: https://github.com/golangci/golangci-lint-action/compare/v4.0.0...v4.0.1
--- ### Configuration 📅 **Schedule**: Branch creation - "before 6am on monday" in timezone Australia/Sydney, Automerge - At any time (no schedule defined). đŸšĻ **Automerge**: Disabled by config. Please merge this manually once you are satisfied. â™ģ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. đŸ‘ģ **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/google/osv-scanner). --- .github/workflows/checks.yml | 18 +++++++++--------- .github/workflows/codeql-analysis.yml | 10 +++++----- .github/workflows/goreleaser.yml | 4 ++-- .github/workflows/link-check-on-push.yml | 2 +- .github/workflows/link-check.yml | 2 +- .github/workflows/lint-action/action.yml | 2 +- .github/workflows/osv-scanner-reusable-pr.yml | 10 +++++----- .github/workflows/osv-scanner-reusable.yml | 8 ++++---- .github/workflows/prerelease-check.yml | 16 ++++++++-------- .github/workflows/scorecards.yml | 6 +++--- .github/workflows/test-action/action.yml | 2 +- 11 files changed, 40 insertions(+), 40 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 86983261c06..db39d09a418 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -39,7 +39,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: persist-credentials: false - run: scripts/report_uncleaned_snapshots.py @@ -50,7 +50,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: persist-credentials: false - name: Run lint action @@ -62,11 +62,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: persist-credentials: false - name: Set up Go - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: .go-version check-latest: true @@ -78,11 +78,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: persist-credentials: false - run: scripts/build_test_images.sh - - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: image-fixtures-${{ github.run_number }}-${{ github.run_attempt }} path: internal/image/fixtures/*.tar @@ -100,15 +100,15 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Check out code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: persist-credentials: false - - uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 + - uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 with: name: image-fixtures-${{ github.run_number }}-${{ github.run_attempt }} path: internal/image/fixtures/ - name: Set up Go - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: .go-version check-latest: true diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 923b099ea8b..5a7261905d0 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -42,15 +42,15 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 # Update go to the latest version to support minor go versions is go.mod file - name: Install Go - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: go.mod # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10 + uses: github/codeql-action/init@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -61,7 +61,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10 + uses: github/codeql-action/autobuild@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 # ℹī¸ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -75,4 +75,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10 + uses: github/codeql-action/analyze@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 diff --git a/.github/workflows/goreleaser.yml b/.github/workflows/goreleaser.yml index 9ce69c7c310..a9ab90d282d 100644 --- a/.github/workflows/goreleaser.yml +++ b/.github/workflows/goreleaser.yml @@ -22,12 +22,12 @@ jobs: DOCKER_CLI_EXPERIMENTAL: "enabled" steps: - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: fetch-depth: 0 ref: ${{ inputs.commit }} - name: Set up Go - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: .go-version check-latest: true diff --git a/.github/workflows/link-check-on-push.yml b/.github/workflows/link-check-on-push.yml index d651ae1e0c7..c5d38d13c1a 100644 --- a/.github/workflows/link-check-on-push.yml +++ b/.github/workflows/link-check-on-push.yml @@ -12,7 +12,7 @@ jobs: contents: read # to fetch code (actions/checkout) runs-on: ubuntu-latest steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: gaurav-nelson/github-action-markdown-link-check@25b2c436c653f0d4500d3c2df86e5c14e71e44e1 with: use-quiet-mode: "yes" diff --git a/.github/workflows/link-check.yml b/.github/workflows/link-check.yml index 2e35b09624b..565948cbfdf 100644 --- a/.github/workflows/link-check.yml +++ b/.github/workflows/link-check.yml @@ -14,7 +14,7 @@ jobs: contents: read # to fetch code (actions/checkout) runs-on: ubuntu-latest steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: gaurav-nelson/github-action-markdown-link-check@25b2c436c653f0d4500d3c2df86e5c14e71e44e1 with: use-quiet-mode: "yes" diff --git a/.github/workflows/lint-action/action.yml b/.github/workflows/lint-action/action.yml index 68b823f1676..c4fe4ffb7b7 100644 --- a/.github/workflows/lint-action/action.yml +++ b/.github/workflows/lint-action/action.yml @@ -19,7 +19,7 @@ runs: using: composite steps: - name: Run golangci-lint - uses: golangci/golangci-lint-action@3cfe3a4abbb849e10058ce4af15d205b6da42804 # v4.0.0 + uses: golangci/golangci-lint-action@d6238b002a20823d52840fda27e2d4891c5952dc # v4.0.1 with: # Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version version: v1.56.2 diff --git a/.github/workflows/osv-scanner-reusable-pr.yml b/.github/workflows/osv-scanner-reusable-pr.yml index 3f64bd13ef9..39740a85623 100644 --- a/.github/workflows/osv-scanner-reusable-pr.yml +++ b/.github/workflows/osv-scanner-reusable-pr.yml @@ -49,7 +49,7 @@ jobs: security-events: write # for uploading SARIF files runs-on: ubuntu-latest steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: fetch-depth: 0 # Do persist credentials, as we need it for the git checkout later @@ -86,21 +86,21 @@ jobs: # format to the repository Actions tab. - name: "Upload artifact" if: "!cancelled()" - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: SARIF file path: ${{ inputs.results-file-name }} retention-days: 5 - name: "Upload old scan json results" if: "!cancelled()" - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: old-json-results path: old-results.json retention-days: 5 - name: "Upload new scan json results" if: "!cancelled()" - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: new-json-results path: new-results.json @@ -108,6 +108,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" if: ${{ !cancelled() && inputs.upload-sarif == true }} - uses: github/codeql-action/upload-sarif@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10 + uses: github/codeql-action/upload-sarif@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 with: sarif_file: ${{ inputs.results-file-name }} diff --git a/.github/workflows/osv-scanner-reusable.yml b/.github/workflows/osv-scanner-reusable.yml index 9b157ec457f..53aa188ddd0 100644 --- a/.github/workflows/osv-scanner-reusable.yml +++ b/.github/workflows/osv-scanner-reusable.yml @@ -54,11 +54,11 @@ jobs: security-events: write # for uploading SARIF files runs-on: ubuntu-latest steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: persist-credentials: false - name: "Download custom artifact if specified" - uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 + uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 if: "${{ inputs.download-artifact != '' }}" with: name: "${{ inputs.download-artifact }}" @@ -83,7 +83,7 @@ jobs: # format to the repository Actions tab. - name: "Upload artifact" if: "!cancelled()" - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: SARIF file path: ${{ inputs.results-file-name }} @@ -91,6 +91,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" if: "${{ !cancelled() && inputs.upload-sarif == true }}" - uses: github/codeql-action/upload-sarif@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10 + uses: github/codeql-action/upload-sarif@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 with: sarif_file: ${{ inputs.results-file-name }} diff --git a/.github/workflows/prerelease-check.yml b/.github/workflows/prerelease-check.yml index 0c3d7b6d260..d2a080332ed 100644 --- a/.github/workflows/prerelease-check.yml +++ b/.github/workflows/prerelease-check.yml @@ -36,7 +36,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: persist-credentials: false - name: Run lint action @@ -48,12 +48,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: persist-credentials: false ref: ${{ inputs.commit }} - name: Set up Go - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: .go-version check-latest: true @@ -65,11 +65,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: persist-credentials: false - run: scripts/build_test_images.sh - - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: image-fixtures-${{ github.run_number }}-${{ github.run_attempt }} path: internal/image/fixtures/*.tar @@ -87,16 +87,16 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Check out code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: persist-credentials: false ref: ${{ inputs.commit }} - - uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 + - uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 with: name: image-fixtures-${{ github.run_number }}-${{ github.run_attempt }} path: internal/image/fixtures/ - name: Set up Go - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version-file: .go-version check-latest: true diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index a35ea3890c9..852edd4e233 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -33,7 +33,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: persist-credentials: false @@ -60,7 +60,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: SARIF file path: results.sarif @@ -68,6 +68,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10 + uses: github/codeql-action/upload-sarif@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 with: sarif_file: results.sarif diff --git a/.github/workflows/test-action/action.yml b/.github/workflows/test-action/action.yml index bf7cf2a545d..7158ab4621b 100644 --- a/.github/workflows/test-action/action.yml +++ b/.github/workflows/test-action/action.yml @@ -29,7 +29,7 @@ runs: TEST_ACCEPTANCE: true run: ./scripts/run_tests.sh - name: Upload coverage to Codecov - uses: codecov/codecov-action@84508663e988701840491b86de86b666e8a86bed # v4.3.0 + uses: codecov/codecov-action@5ecb98a3c6b747ed38dc09f787459979aebb39be # v4.3.1 with: token: ${{ inputs.codecov_token }} fail_ci_if_error: true From 7360e3aadd94b4eaa2f1419378c88cd21d8798ca Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Mon, 6 May 2024 13:41:00 +1200 Subject: [PATCH 24/68] test: remove future snapshots (#960) These got included in #938 even though they're for #937 and it seems that `go-snaps` does not error about this even though it will clean them up if run with `UPDATE_SNAPS=clean`. --- internal/output/__snapshots__/sarif_test.snap | 1214 ----------------- 1 file changed, 1214 deletions(-) diff --git a/internal/output/__snapshots__/sarif_test.snap b/internal/output/__snapshots__/sarif_test.snap index 0a3e141c826..2a70e024726 100755 --- a/internal/output/__snapshots__/sarif_test.snap +++ b/internal/output/__snapshots__/sarif_test.snap @@ -137,1217 +137,3 @@ } --- - -[TestPrintSARIFReport_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_no_license_violations - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [], - "version": "1.7.2" - } - }, - "results": [] - } - ] -} - ---- - -[TestPrintSARIFReport_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_some_license_violations - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [], - "version": "1.7.2" - } - }, - "results": [] - } - ] -} - ---- - -[TestPrintSARIFReport_WithLicenseViolations/multiple_sources_with_no_packages - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [], - "version": "1.7.2" - } - }, - "results": [] - } - ] -} - ---- - -[TestPrintSARIFReport_WithLicenseViolations/no_sources - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [], - "version": "1.7.2" - } - }, - "results": [] - } - ] -} - ---- - -[TestPrintSARIFReport_WithLicenseViolations/one_source_with_no_packages - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [], - "version": "1.7.2" - } - }, - "results": [] - } - ] -} - ---- - -[TestPrintSARIFReport_WithLicenseViolations/one_source_with_one_package,_no_license_violations - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [], - "version": "1.7.2" - } - }, - "results": [] - } - ] -} - ---- - -[TestPrintSARIFReport_WithLicenseViolations/one_source_with_one_package_and_multiple_license_violations - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [], - "version": "1.7.2" - } - }, - "results": [] - } - ] -} - ---- - -[TestPrintSARIFReport_WithLicenseViolations/one_source_with_one_package_and_one_license_violation - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [], - "version": "1.7.2" - } - }, - "results": [] - } - ] -} - ---- - -[TestPrintSARIFReport_WithLicenseViolations/two_sources_with_packages,_one_license_violation - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [], - "version": "1.7.2" - } - }, - "results": [] - } - ] -} - ---- - -[TestPrintSARIFReport_WithMixedIssues/multiple_sources_with_a_mixed_count_of_packages,_some_vulnerabilities_and_license_violations - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [ - { - "id": "OSV-1", - "name": "OSV-1", - "shortDescription": { - "text": "OSV-1: Something scary!" - }, - "fullDescription": { - "text": "", - "markdown": "" - }, - "deprecatedIds": [ - "OSV-1" - ], - "help": { - "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/third/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/third/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", - "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/third/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/third/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" - } - }, - { - "id": "OSV-2", - "name": "OSV-2", - "shortDescription": { - "text": "OSV-2: Something less scary!" - }, - "fullDescription": { - "text": "", - "markdown": "" - }, - "deprecatedIds": [ - "OSV-2" - ], - "help": { - "text": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine2 | 3.2.5 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", - "markdown": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine2 | 3.2.5 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" - } - } - ], - "version": "1.7.2" - } - }, - "artifacts": [ - { - "location": { - "uri": "path/to/my/first/lockfile" - }, - "length": -1 - }, - { - "location": { - "uri": "path/to/my/third/lockfile" - }, - "length": -1 - }, - { - "location": { - "uri": "path/to/my/second/lockfile" - }, - "length": -1 - } - ], - "results": [ - { - "ruleId": "OSV-1", - "ruleIndex": 0, - "level": "warning", - "message": { - "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "path/to/my/first/lockfile" - } - } - } - ] - }, - { - "ruleId": "OSV-1", - "ruleIndex": 0, - "level": "warning", - "message": { - "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "path/to/my/third/lockfile" - } - } - } - ] - }, - { - "ruleId": "OSV-2", - "ruleIndex": 1, - "level": "warning", - "message": { - "text": "Package 'mine2@3.2.5' is vulnerable to 'OSV-2'." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "path/to/my/second/lockfile" - } - } - } - ] - } - ] - } - ] -} - ---- - -[TestPrintSARIFReport_WithMixedIssues/one_source_with_one_package,_one_vulnerability,_and_one_license_violation - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [ - { - "id": "OSV-1", - "name": "OSV-1", - "shortDescription": { - "text": "OSV-1: Something scary!" - }, - "fullDescription": { - "text": "", - "markdown": "" - }, - "deprecatedIds": [ - "OSV-1" - ], - "help": { - "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", - "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" - } - } - ], - "version": "1.7.2" - } - }, - "artifacts": [ - { - "location": { - "uri": "path/to/my/first/lockfile" - }, - "length": -1 - } - ], - "results": [ - { - "ruleId": "OSV-1", - "ruleIndex": 0, - "level": "warning", - "message": { - "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "path/to/my/first/lockfile" - } - } - } - ] - } - ] - } - ] -} - ---- - -[TestPrintSARIFReport_WithMixedIssues/two_sources_with_packages,_one_vulnerability,_one_license_violation - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [ - { - "id": "OSV-1", - "name": "OSV-1", - "shortDescription": { - "text": "OSV-1: Something scary!" - }, - "fullDescription": { - "text": "", - "markdown": "" - }, - "deprecatedIds": [ - "OSV-1" - ], - "help": { - "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", - "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" - } - } - ], - "version": "1.7.2" - } - }, - "artifacts": [ - { - "location": { - "uri": "path/to/my/first/lockfile" - }, - "length": -1 - } - ], - "results": [ - { - "ruleId": "OSV-1", - "ruleIndex": 0, - "level": "warning", - "message": { - "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "path/to/my/first/lockfile" - } - } - } - ] - } - ] - } - ] -} - ---- - -[TestPrintSARIFReport_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_and_multiple_vulnerabilities - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [ - { - "id": "OSV-1", - "name": "OSV-1", - "shortDescription": { - "text": "OSV-1: Something scary!" - }, - "fullDescription": { - "text": "", - "markdown": "" - }, - "deprecatedIds": [ - "OSV-1" - ], - "help": { - "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.2 |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", - "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.2 |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" - } - }, - { - "id": "OSV-2", - "name": "OSV-2", - "shortDescription": { - "text": "OSV-2: Something less scary!" - }, - "fullDescription": { - "text": "", - "markdown": "" - }, - "deprecatedIds": [ - "OSV-2" - ], - "help": { - "text": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine2 | 3.2.5 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", - "markdown": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine2 | 3.2.5 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" - } - }, - { - "id": "OSV-3", - "name": "OSV-3", - "shortDescription": { - "text": "OSV-3: Something mildly scary!" - }, - "fullDescription": { - "text": "", - "markdown": "" - }, - "deprecatedIds": [ - "OSV-3" - ], - "help": { - "text": "**Your dependency is vulnerable to [OSV-3](https://osv.dev/list?q=OSV-3)**.\n\n## [OSV-3](https://osv.dev/vulnerability/OSV-3)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine3 | 0.4.1 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-3\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", - "markdown": "**Your dependency is vulnerable to [OSV-3](https://osv.dev/list?q=OSV-3)**.\n\n## [OSV-3](https://osv.dev/vulnerability/OSV-3)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine3 | 0.4.1 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-3\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" - } - }, - { - "id": "OSV-5", - "name": "OSV-5", - "shortDescription": { - "text": "OSV-5: Something scarier!" - }, - "fullDescription": { - "text": "", - "markdown": "" - }, - "deprecatedIds": [ - "OSV-5" - ], - "help": { - "text": "**Your dependency is vulnerable to [OSV-5](https://osv.dev/list?q=OSV-5)**.\n\n## [OSV-5](https://osv.dev/vulnerability/OSV-5)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/second/lockfile | mine3 | 0.4.1 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-5\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-5\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", - "markdown": "**Your dependency is vulnerable to [OSV-5](https://osv.dev/list?q=OSV-5)**.\n\n## [OSV-5](https://osv.dev/vulnerability/OSV-5)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/second/lockfile | mine3 | 0.4.1 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-5\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-5\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" - } - } - ], - "version": "1.7.2" - } - }, - "artifacts": [ - { - "location": { - "uri": "path/to/my/first/lockfile" - }, - "length": -1 - }, - { - "location": { - "uri": "path/to/my/second/lockfile" - }, - "length": -1 - } - ], - "results": [ - { - "ruleId": "OSV-1", - "ruleIndex": 0, - "level": "warning", - "message": { - "text": "Package 'mine1@1.2.2' is vulnerable to 'OSV-1'." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "path/to/my/first/lockfile" - } - } - } - ] - }, - { - "ruleId": "OSV-1", - "ruleIndex": 0, - "level": "warning", - "message": { - "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "path/to/my/first/lockfile" - } - } - } - ] - }, - { - "ruleId": "OSV-2", - "ruleIndex": 1, - "level": "warning", - "message": { - "text": "Package 'mine2@3.2.5' is vulnerable to 'OSV-2'." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "path/to/my/second/lockfile" - } - } - } - ] - }, - { - "ruleId": "OSV-3", - "ruleIndex": 2, - "level": "warning", - "message": { - "text": "Package 'mine3@0.4.1' is vulnerable to 'OSV-3'." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "path/to/my/second/lockfile" - } - } - } - ] - }, - { - "ruleId": "OSV-5", - "ruleIndex": 3, - "level": "warning", - "message": { - "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-5'." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "path/to/my/first/lockfile" - } - } - } - ] - }, - { - "ruleId": "OSV-5", - "ruleIndex": 3, - "level": "warning", - "message": { - "text": "Package 'mine3@0.4.1' is vulnerable to 'OSV-5'." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "path/to/my/second/lockfile" - } - } - } - ] - } - ] - } - ] -} - ---- - -[TestPrintSARIFReport_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_no_vulnerabilities - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [], - "version": "1.7.2" - } - }, - "results": [] - } - ] -} - ---- - -[TestPrintSARIFReport_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_some_vulnerabilities - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [ - { - "id": "OSV-1", - "name": "OSV-1", - "shortDescription": { - "text": "OSV-1: Something scary!" - }, - "fullDescription": { - "text": "", - "markdown": "" - }, - "deprecatedIds": [ - "OSV-1" - ], - "help": { - "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/third/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/third/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", - "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/third/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/third/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" - } - }, - { - "id": "OSV-2", - "name": "OSV-2", - "shortDescription": { - "text": "OSV-2: Something less scary!" - }, - "fullDescription": { - "text": "", - "markdown": "" - }, - "deprecatedIds": [ - "OSV-2" - ], - "help": { - "text": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine2 | 3.2.5 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", - "markdown": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine2 | 3.2.5 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" - } - } - ], - "version": "1.7.2" - } - }, - "artifacts": [ - { - "location": { - "uri": "path/to/my/first/lockfile" - }, - "length": -1 - }, - { - "location": { - "uri": "path/to/my/third/lockfile" - }, - "length": -1 - }, - { - "location": { - "uri": "path/to/my/second/lockfile" - }, - "length": -1 - } - ], - "results": [ - { - "ruleId": "OSV-1", - "ruleIndex": 0, - "level": "warning", - "message": { - "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "path/to/my/first/lockfile" - } - } - } - ] - }, - { - "ruleId": "OSV-1", - "ruleIndex": 0, - "level": "warning", - "message": { - "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "path/to/my/third/lockfile" - } - } - } - ] - }, - { - "ruleId": "OSV-2", - "ruleIndex": 1, - "level": "warning", - "message": { - "text": "Package 'mine2@3.2.5' is vulnerable to 'OSV-2'." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "path/to/my/second/lockfile" - } - } - } - ] - } - ] - } - ] -} - ---- - -[TestPrintSARIFReport_WithVulnerabilities/multiple_sources_with_no_packages - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [], - "version": "1.7.2" - } - }, - "results": [] - } - ] -} - ---- - -[TestPrintSARIFReport_WithVulnerabilities/no_sources - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [], - "version": "1.7.2" - } - }, - "results": [] - } - ] -} - ---- - -[TestPrintSARIFReport_WithVulnerabilities/one_source_with_no_packages - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [], - "version": "1.7.2" - } - }, - "results": [] - } - ] -} - ---- - -[TestPrintSARIFReport_WithVulnerabilities/one_source_with_one_package,_no_vulnerabilities - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [], - "version": "1.7.2" - } - }, - "results": [] - } - ] -} - ---- - -[TestPrintSARIFReport_WithVulnerabilities/one_source_with_one_package_and_one_vulnerability - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [ - { - "id": "OSV-1", - "name": "OSV-1", - "shortDescription": { - "text": "OSV-1: Something scary!" - }, - "fullDescription": { - "text": "", - "markdown": "" - }, - "deprecatedIds": [ - "OSV-1" - ], - "help": { - "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", - "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" - } - } - ], - "version": "1.7.2" - } - }, - "artifacts": [ - { - "location": { - "uri": "path/to/my/first/lockfile" - }, - "length": -1 - } - ], - "results": [ - { - "ruleId": "OSV-1", - "ruleIndex": 0, - "level": "warning", - "message": { - "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "path/to/my/first/lockfile" - } - } - } - ] - } - ] - } - ] -} - ---- - -[TestPrintSARIFReport_WithVulnerabilities/one_source_with_one_package_and_two_aliases_of_a_single_vulnerability - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [ - { - "id": "OSV-1", - "name": "OSV-1", - "shortDescription": { - "text": "OSV-1: Something scary!" - }, - "fullDescription": { - "text": "", - "markdown": "" - }, - "deprecatedIds": [ - "OSV-1", - "GHSA-123" - ], - "help": { - "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**\n(Also published as: [GHSA-123](https://osv.dev/vulnerability/GHSA-123), ).\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n## [GHSA-123](https://osv.dev/vulnerability/GHSA-123)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", - "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**\n(Also published as: [GHSA-123](https://osv.dev/vulnerability/GHSA-123), ).\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n## [GHSA-123](https://osv.dev/vulnerability/GHSA-123)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" - } - } - ], - "version": "1.7.2" - } - }, - "artifacts": [ - { - "location": { - "uri": "path/to/my/first/lockfile" - }, - "length": -1 - } - ], - "results": [ - { - "ruleId": "OSV-1", - "ruleIndex": 0, - "level": "warning", - "message": { - "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1' (also known as 'GHSA-123')." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "path/to/my/first/lockfile" - } - } - } - ] - }, - { - "ruleId": "OSV-1", - "ruleIndex": 0, - "level": "warning", - "message": { - "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1' (also known as 'GHSA-123')." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "path/to/my/first/lockfile" - } - } - } - ] - } - ] - } - ] -} - ---- - -[TestPrintSARIFReport_WithVulnerabilities/one_source_with_vulnerabilities,_some_missing_content - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [ - { - "id": "OSV-1", - "name": "OSV-1", - "shortDescription": { - "text": "OSV-1" - }, - "fullDescription": { - "text": "This vulnerability allows for some very scary stuff to happen - seriously, you'd not believe it!", - "markdown": "This vulnerability allows for some very scary stuff to happen - seriously, you'd not believe it!" - }, - "deprecatedIds": [ - "OSV-1" - ], - "help": { - "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e This vulnerability allows for some very scary stuff to happen - seriously, you'd not believe it!\n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", - "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e This vulnerability allows for some very scary stuff to happen - seriously, you'd not believe it!\n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" - } - }, - { - "id": "OSV-2", - "name": "OSV-2", - "shortDescription": { - "text": "OSV-2" - }, - "fullDescription": { - "text": "", - "markdown": "" - }, - "deprecatedIds": [ - "OSV-2" - ], - "help": { - "text": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine3 | 0.10.2-rc |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", - "markdown": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine3 | 0.10.2-rc |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" - } - } - ], - "version": "1.7.2" - } - }, - "artifacts": [ - { - "location": { - "uri": "path/to/my/first/lockfile" - }, - "length": -1 - } - ], - "results": [ - { - "ruleId": "OSV-1", - "ruleIndex": 0, - "level": "warning", - "message": { - "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "path/to/my/first/lockfile" - } - } - } - ] - }, - { - "ruleId": "OSV-2", - "ruleIndex": 1, - "level": "warning", - "message": { - "text": "Package 'mine3@0.10.2-rc' is vulnerable to 'OSV-2'." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "path/to/my/first/lockfile" - } - } - } - ] - } - ] - } - ] -} - ---- - -[TestPrintSARIFReport_WithVulnerabilities/two_sources_with_packages,_one_vulnerability - 1] -{ - "version": "2.1.0", - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "runs": [ - { - "tool": { - "driver": { - "informationUri": "https://github.com/google/osv-scanner", - "name": "osv-scanner", - "rules": [ - { - "id": "OSV-1", - "name": "OSV-1", - "shortDescription": { - "text": "OSV-1: Something scary!" - }, - "fullDescription": { - "text": "", - "markdown": "" - }, - "deprecatedIds": [ - "OSV-1" - ], - "help": { - "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", - "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" - } - } - ], - "version": "1.7.2" - } - }, - "artifacts": [ - { - "location": { - "uri": "path/to/my/first/lockfile" - }, - "length": -1 - } - ], - "results": [ - { - "ruleId": "OSV-1", - "ruleIndex": 0, - "level": "warning", - "message": { - "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "path/to/my/first/lockfile" - } - } - } - ] - } - ] - } - ] -} - ---- From 9df682974cc0245e3feccc394e1c515e81c30726 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Mon, 6 May 2024 13:41:40 +1200 Subject: [PATCH 25/68] refactor: apply Rubocop to Ruby generator (#956) Cherry-pick of https://github.com/G-Rath/osv-detector/pull/240 --- This is all pretty harmless but there's some nice small improvements in here --- .../generators/generate-rubygems-versions.rb | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/scripts/generators/generate-rubygems-versions.rb b/scripts/generators/generate-rubygems-versions.rb index 8db88dc52cd..fd5529cd398 100755 --- a/scripts/generators/generate-rubygems-versions.rb +++ b/scripts/generators/generate-rubygems-versions.rb @@ -13,7 +13,7 @@ # such comparisons in the detector would in fact be wrong. # # @type [Array] -UNSUPPORTED_COMPARISONS = [] +UNSUPPORTED_COMPARISONS = [].freeze # @param [String] line # @return [Boolean] @@ -24,12 +24,12 @@ def is_unsupported_comparison?(line) # @param [String] line # @return [String] def uncomment(line) - line.sub(/^#|\/\//, "") + line.sub(%r{^#|//}, "") end def download_rubygems_db URI.open("https://osv-vulnerabilities.storage.googleapis.com/RubyGems/all.zip") do |zip| - File.open("rubygems-db.zip", "wb") { |f| f.write(zip.read) } + File.binwrite("rubygems-db.zip", zip.read) end end @@ -38,6 +38,8 @@ def extract_packages_with_versions(osvs) osvs.each do |osv| osv["affected"].each do |affected| + next unless affected["package"]["ecosystem"] == "RubyGems" + package = affected["package"]["name"] packages[package] ||= [] @@ -47,7 +49,7 @@ def extract_packages_with_versions(osvs) end end - packages.map { |k, v| [k, v.uniq.sort] }.to_h + packages.transform_values { |v| v.uniq.sort } end def compare_version(v1, op, v2) @@ -72,7 +74,7 @@ def compare_versions(lines, select = :all) next end - parts = line.split(" ") + parts = line.split v1 = parts[0] op = parts[1] v2 = parts[2] @@ -117,7 +119,7 @@ def generate_version_compares(versions) def generate_package_compares(packages) comparisons = [] - packages.each { |_, versions| comparisons.concat(generate_version_compares(versions)) } + packages.each_value { |versions| comparisons.concat(generate_version_compares(versions)) } comparisons end @@ -125,7 +127,7 @@ def generate_package_compares(packages) def fetch_packages_versions download_rubygems_db - osvs = Zip::File.open("rubygems-db.zip").map { |f| JSON.load(f.get_input_stream.read) } + osvs = Zip::File.open("rubygems-db.zip").map { |f| JSON.parse(f.get_input_stream.read) } extract_packages_with_versions(osvs) end @@ -134,7 +136,7 @@ def fetch_packages_versions packs = fetch_packages_versions -File.open(outfile, "w") { |f| f.write(generate_package_compares(packs).uniq.join("\n") + "\n") } +File.write(outfile, "#{generate_package_compares(packs).uniq.join("\n")}\n") # set this to either "failures" or "successes" to only have those comparison results # printed; setting it to anything else will have all comparison results printed From cbc967811e30dba675850f88e70612461cd3264b Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Mon, 6 May 2024 19:50:29 +1200 Subject: [PATCH 26/68] refactor: encapsulate getting the working directory in a helper function (#961) This "improves" our coverage artificially since the unhappy path is not coverable and this reduces us from three uncoverable lines to one. I think this is worth doing as it feels more representative especially since we're panicking meaning we consider this a very unlikely and "on fire" situation, so we're hiding that within a particular function whose name makes that clear a la `regexp.MustCompile` --- internal/output/githubannotation.go | 7 +------ internal/output/result.go | 12 ++++++++++++ internal/output/table.go | 14 +++----------- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/internal/output/githubannotation.go b/internal/output/githubannotation.go index 42a74be53d5..fda54bda0c0 100644 --- a/internal/output/githubannotation.go +++ b/internal/output/githubannotation.go @@ -3,8 +3,6 @@ package output import ( "fmt" "io" - "log" - "os" "path/filepath" "strings" @@ -43,10 +41,7 @@ func PrintGHAnnotationReport(vulnResult *models.VulnerabilityResults, outputWrit // TODO: Also support last affected groupFixedVersions := GroupFixedVersions(flattened) - workingDir, err := os.Getwd() - if err != nil { - log.Panicf("can't get working dir: %v", err) - } + workingDir := mustGetWorkingDirectory() for _, source := range vulnResult.Results { // TODO: Support docker images diff --git a/internal/output/result.go b/internal/output/result.go index eb361815731..bbe2d8be7a8 100644 --- a/internal/output/result.go +++ b/internal/output/result.go @@ -2,6 +2,8 @@ package output import ( "encoding/json" + "log" + "os" "slices" "strings" @@ -63,6 +65,16 @@ func (pss *pkgSourceSet) UnmarshalJSON(data []byte) error { return nil } +// mustGetWorkingDirectory panics if it can't get the working directory +func mustGetWorkingDirectory() string { + dir, err := os.Getwd() + if err != nil { + log.Panicf("can't get working dir: %v", err) + } + + return dir +} + // groupFixedVersions builds the fixed versions for each ID Group, with keys formatted like so: // `Source:ID` func groupFixedVersions(flattened []models.VulnerabilityFlattened) map[string][]string { diff --git a/internal/output/table.go b/internal/output/table.go index 1dc912d5ef7..adc5f5e3c94 100644 --- a/internal/output/table.go +++ b/internal/output/table.go @@ -3,9 +3,7 @@ package output import ( "fmt" "io" - "log" "math" - "os" "path/filepath" "sort" "strings" @@ -88,11 +86,8 @@ type tbInnerResponse struct { func tableBuilderInner(vulnResult *models.VulnerabilityResults, addStyling bool, calledVulns bool) []tbInnerResponse { allOutputRows := []tbInnerResponse{} - // Working directory used to simplify path - workingDir, err := os.Getwd() - if err != nil { - log.Panicf("can't get working dir: %v", err) - } + workingDir := mustGetWorkingDirectory() + for _, sourceRes := range vulnResult.Results { for _, pkg := range sourceRes.Packages { source := sourceRes.Source @@ -217,10 +212,7 @@ func licenseSummaryTableBuilder(outputTable table.Writer, vulnResult *models.Vul func licenseViolationsTableBuilder(outputTable table.Writer, vulnResult *models.VulnerabilityResults) table.Writer { outputTable.AppendHeader(table.Row{"License Violation", "Ecosystem", "Package", "Version", "Source"}) - workingDir, err := os.Getwd() - if err != nil { - log.Panicf("can't get working dir: %v", err) - } + workingDir := mustGetWorkingDirectory() for _, pkgSource := range vulnResult.Results { for _, pkg := range pkgSource.Packages { if len(pkg.LicenseViolations) == 0 { From 94dc496e862c5454eaf8c1c85380fc06302a4ed7 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Mon, 6 May 2024 19:52:07 +1200 Subject: [PATCH 27/68] chore: only extract versions from packages in the generator ecosystem (#957) Cherry-picked from https://github.com/G-Rath/osv-detector/pull/241 --- Currently the generators assume that all packages in an OSV are for their respective ecosystem which since they download ecosystem-specific databases is _mostly_ true, but there are a few OSVs that are for packages that exist across more than one ecosystem. This has not been a problem up until now because either the versions in such OSVs happen to be compatible with native ecosystem version parser or we're skipping invalid versions for legacy reasons, but now GHSA-5844-q3fc-56rh exists which has versions that are invalid in Ruby. --- scripts/generators/GenerateMavenVersions.java | 4 ++++ scripts/generators/generate-cran-versions.R | 4 ++++ scripts/generators/generate-debian-versions.py | 3 +++ scripts/generators/generate-packagist-versions.php | 4 ++++ scripts/generators/generate-pypi-versions.py | 3 +++ 5 files changed, 18 insertions(+) diff --git a/scripts/generators/GenerateMavenVersions.java b/scripts/generators/GenerateMavenVersions.java index 65ff982c0f2..ad446bbeab3 100644 --- a/scripts/generators/GenerateMavenVersions.java +++ b/scripts/generators/GenerateMavenVersions.java @@ -94,6 +94,10 @@ public static Map> fetchPackageVersions() throws IOExceptio osvs.forEach(osv -> osv.getJSONArray("affected").forEach(aff -> { JSONObject affected = (JSONObject) aff; + if(affected.getJSONObject("package").getString("ecosystem").equals("Maven")) { + return; + } + String pkgName = affected.getJSONObject("package").getString("name"); if(!affected.has("versions")) { diff --git a/scripts/generators/generate-cran-versions.R b/scripts/generators/generate-cran-versions.R index 10013dd57b1..9de7f4605a5 100755 --- a/scripts/generators/generate-cran-versions.R +++ b/scripts/generators/generate-cran-versions.R @@ -24,6 +24,10 @@ extract_packages_with_versions <- function(osvs) { for (osv in osvs) { for (affected in osv$affected) { + if (affected$package$ecosystem != "CRAN") { + next + } + package <- affected$package$name if (!(package %in% names(result))) { diff --git a/scripts/generators/generate-debian-versions.py b/scripts/generators/generate-debian-versions.py index 624ee6edfce..97cd18a3719 100755 --- a/scripts/generators/generate-debian-versions.py +++ b/scripts/generators/generate-debian-versions.py @@ -47,6 +47,9 @@ def extract_packages_with_versions(osvs): for osv in osvs: for affected in osv['affected']: + if not affected['package']['ecosystem'].startswith('Debian'): + continue + package = affected['package']['name'] if package not in dict: diff --git a/scripts/generators/generate-packagist-versions.php b/scripts/generators/generate-packagist-versions.php index ff14e61479d..d193d3019be 100644 --- a/scripts/generators/generate-packagist-versions.php +++ b/scripts/generators/generate-packagist-versions.php @@ -79,6 +79,10 @@ function fetchPackageVersions(): array foreach ($osvs as $osv) { foreach ($osv['affected'] as $affected) { + if ($affected['package']['ecosystem'] !== 'Packagist') { + continue; + } + $package = $affected['package']['name']; if (!isset($packages[$package])) { diff --git a/scripts/generators/generate-pypi-versions.py b/scripts/generators/generate-pypi-versions.py index 15999b1e1d1..5b039ffc977 100755 --- a/scripts/generators/generate-pypi-versions.py +++ b/scripts/generators/generate-pypi-versions.py @@ -40,6 +40,9 @@ def extract_packages_with_versions(osvs): for osv in osvs: for affected in osv['affected']: + if affected['package']['ecosystem'] != 'PyPI': + continue + package = affected['package']['name'] if package not in dict: From 9fee15096f987411e86bb71a40b59d141360ced4 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Mon, 6 May 2024 19:52:31 +1200 Subject: [PATCH 28/68] ci: upgrade `golangci/golangci-lint-action` to v5 (#964) Cherry-picked from #897 --- We can drop the `skip-pkg-cache` option now as caching has been removed in favor of `actions/setup-go`s caching --- .github/workflows/lint-action/action.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/lint-action/action.yml b/.github/workflows/lint-action/action.yml index c4fe4ffb7b7..4b627e8c176 100644 --- a/.github/workflows/lint-action/action.yml +++ b/.github/workflows/lint-action/action.yml @@ -19,9 +19,7 @@ runs: using: composite steps: - name: Run golangci-lint - uses: golangci/golangci-lint-action@d6238b002a20823d52840fda27e2d4891c5952dc # v4.0.1 + uses: golangci/golangci-lint-action@38e1018663fa5173f3968ea0777460d3de38f256 # v5.3.0 with: # Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version version: v1.56.2 - # https://github.com/golangci/golangci-lint-action/issues/135 - skip-pkg-cache: true From cc7261ec1186504a65712ede7a3eb2de77e4d42d Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Tue, 7 May 2024 11:51:37 +1200 Subject: [PATCH 29/68] chore: import `sys` in Python generators (#966) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The irony of this is not lost on me 😅 --- scripts/generators/generate-debian-versions.py | 1 + scripts/generators/generate-pypi-versions.py | 1 + 2 files changed, 2 insertions(+) diff --git a/scripts/generators/generate-debian-versions.py b/scripts/generators/generate-debian-versions.py index 97cd18a3719..ba479b477b4 100755 --- a/scripts/generators/generate-debian-versions.py +++ b/scripts/generators/generate-debian-versions.py @@ -4,6 +4,7 @@ import operator import os import subprocess +import sys import urllib.request import zipfile from pathlib import Path diff --git a/scripts/generators/generate-pypi-versions.py b/scripts/generators/generate-pypi-versions.py index 5b039ffc977..f1c4459fe61 100755 --- a/scripts/generators/generate-pypi-versions.py +++ b/scripts/generators/generate-pypi-versions.py @@ -4,6 +4,7 @@ import operator import os import packaging.version +import sys import urllib.request import zipfile From e2adeb55120e84ebc14efa4df71693bf1b5a5c89 Mon Sep 17 00:00:00 2001 From: Rex P <106129829+another-rex@users.noreply.github.com> Date: Tue, 7 May 2024 11:44:20 +1000 Subject: [PATCH 30/68] Update go.mod to 1.21.9 (#907) --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 72c5c4b3e37..bfbe14f264c 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/google/osv-scanner -go 1.21.8 +go 1.21.9 require ( deps.dev/api/v3 v3.0.0-20240503042720-6166138ce783 From 3be8effba8947e491192f5974d1af22a9bf75718 Mon Sep 17 00:00:00 2001 From: Michael Kedar Date: Wed, 8 May 2024 10:30:11 +1000 Subject: [PATCH 31/68] Fix tests; add newly discovered vulns (#970) I wish they would stop discovering new vulnerabilities. --- cmd/osv-scanner/__snapshots__/main_test.snap | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmd/osv-scanner/__snapshots__/main_test.snap b/cmd/osv-scanner/__snapshots__/main_test.snap index 0d782ac1835..fa4c37b28f0 100755 --- a/cmd/osv-scanner/__snapshots__/main_test.snap +++ b/cmd/osv-scanner/__snapshots__/main_test.snap @@ -133,6 +133,7 @@ Loaded filter from: /fixtures/go-project/osv-scanner.toml | https://osv.dev/GO-2024-2609 | | Go | stdlib | 1.21.7 | fixtures/go-project/go.mod | | https://osv.dev/GO-2024-2610 | | Go | stdlib | 1.21.7 | fixtures/go-project/go.mod | | https://osv.dev/GO-2024-2687 | | Go | stdlib | 1.21.7 | fixtures/go-project/go.mod | +| https://osv.dev/GO-2024-2824 | | Go | stdlib | 1.21.7 | fixtures/go-project/go.mod | +------------------------------+------+-----------+---------+---------+----------------------------+ --- @@ -430,6 +431,7 @@ Scanned /fixtures/call-analysis-go-project/go.mod file and found 4 pack | https://osv.dev/GO-2024-2598 | | Go | stdlib | 1.19 | fixtures/call-analysis-go-project/go.mod | | https://osv.dev/GO-2024-2599 | | Go | stdlib | 1.19 | fixtures/call-analysis-go-project/go.mod | | https://osv.dev/GO-2024-2687 | | Go | stdlib | 1.19 | fixtures/call-analysis-go-project/go.mod | +| https://osv.dev/GO-2024-2824 | | Go | stdlib | 1.19 | fixtures/call-analysis-go-project/go.mod | +-------------------------------------+------+-----------+-----------------------------+---------+------------------------------------------+ | Uncalled vulnerabilities | | | | | | +-------------------------------------+------+-----------+-----------------------------+---------+------------------------------------------+ From f86f846ee1ababfec4a074721591b93ba0c16778 Mon Sep 17 00:00:00 2001 From: Rex P <106129829+another-rex@users.noreply.github.com> Date: Wed, 8 May 2024 14:17:49 +1000 Subject: [PATCH 32/68] Update gomod go version (#971) Update to the latest go1.21 version --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index bfbe14f264c..9db439220da 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/google/osv-scanner -go 1.21.9 +go 1.21.10 require ( deps.dev/api/v3 v3.0.0-20240503042720-6166138ce783 From 90e628cb43c44a9d9d1a18e646e168ea7bccaabf Mon Sep 17 00:00:00 2001 From: Rex P <106129829+another-rex@users.noreply.github.com> Date: Wed, 8 May 2024 15:42:15 +1000 Subject: [PATCH 33/68] v1.7.3 changelog and version bump (#972) --- CHANGELOG.md | 11 +++++++++++ cmd/osv-scanner/__snapshots__/main_test.snap | 8 ++++---- internal/output/__snapshots__/sarif_test.snap | 2 +- internal/version/version.go | 2 +- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a3b90287386..f968332b7b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ +# v1.7.3: + +### Features: + +- [Feature #934](https://github.com/google/osv-scanner/pull/934) add support for PNPM v9 lockfiles. + +### Fixes: + +- [Bug #938](https://github.com/google/osv-scanner/issues/938) Ensure the sarif output has a stable order. +- [Bug #922](https://github.com/google/osv-scanner/issues/922) Support filtering on alias IDs in Guided Remediation. + # v1.7.2: ### Fixes: diff --git a/cmd/osv-scanner/__snapshots__/main_test.snap b/cmd/osv-scanner/__snapshots__/main_test.snap index fa4c37b28f0..baf1e4674a3 100755 --- a/cmd/osv-scanner/__snapshots__/main_test.snap +++ b/cmd/osv-scanner/__snapshots__/main_test.snap @@ -9,7 +9,7 @@ No package sources found, --help for usage information. --- [TestRun/#01 - 1] -osv-scanner version: 1.7.2 +osv-scanner version: 1.7.3 commit: n/a built at: n/a @@ -102,7 +102,7 @@ Scanned /fixtures/locks-many/composer.lock file and found 1 package "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.2" + "version": "1.7.3" } }, "results": [] @@ -173,7 +173,7 @@ Loaded filter from: /fixtures/go-project/osv-scanner.toml } } ], - "version": "1.7.2" + "version": "1.7.3" } }, "artifacts": [ @@ -522,7 +522,7 @@ Scanned /fixtures/locks-insecure/osv-scanner-flutter-deps.json file as } } ], - "version": "1.7.2" + "version": "1.7.3" } }, "artifacts": [ diff --git a/internal/output/__snapshots__/sarif_test.snap b/internal/output/__snapshots__/sarif_test.snap index 2a70e024726..4d0023be11a 100755 --- a/internal/output/__snapshots__/sarif_test.snap +++ b/internal/output/__snapshots__/sarif_test.snap @@ -62,7 +62,7 @@ } } ], - "version": "1.7.2" + "version": "1.7.3" } }, "artifacts": [ diff --git a/internal/version/version.go b/internal/version/version.go index 4857e8dd537..a280cb9fe67 100644 --- a/internal/version/version.go +++ b/internal/version/version.go @@ -1,4 +1,4 @@ package version // OSVVersion is the current release version, you should update this variable when doing a release -var OSVVersion = "1.7.2" +var OSVVersion = "1.7.3" From 645d5b0bb9c14741b2147a5305b684e4abc039e0 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 8 May 2024 08:08:04 +0200 Subject: [PATCH 34/68] chore(deps): update golang:1.21-alpine3.19 docker digest to b3aea8d (#973) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | golang | stage | digest | `ed8ce6c` -> `b3aea8d` | --- ### Configuration 📅 **Schedule**: Branch creation - "before 6am on monday" in timezone Australia/Sydney, Automerge - At any time (no schedule defined). đŸšĻ **Automerge**: Disabled by config. Please merge this manually once you are satisfied. â™ģ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/google/osv-scanner). --- Dockerfile | 2 +- action.dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 59bd77a63ac..ac903e63e47 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM golang:1.21-alpine3.19@sha256:ed8ce6c22dd111631c062218989d17ab4b46b503cbe9a9cfce1517836e65298a AS builder +FROM golang:1.21-alpine3.19@sha256:b3aea8df13191dab7d2e44a7fbc51d7b09bb796547127da8d74cfb81e5d65923 AS builder WORKDIR /src COPY ./go.mod ./go.sum ./ diff --git a/action.dockerfile b/action.dockerfile index cfd8f08f09d..2f782843601 100644 --- a/action.dockerfile +++ b/action.dockerfile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM golang:1.21-alpine3.19@sha256:ed8ce6c22dd111631c062218989d17ab4b46b503cbe9a9cfce1517836e65298a +FROM golang:1.21-alpine3.19@sha256:b3aea8df13191dab7d2e44a7fbc51d7b09bb796547127da8d74cfb81e5d65923 RUN mkdir /src WORKDIR /src From 5e53ae86671c98c24469eaf5742b163eabc07995 Mon Sep 17 00:00:00 2001 From: Michael Kedar Date: Thu, 9 May 2024 13:55:42 +1000 Subject: [PATCH 35/68] GR: Add test universe generation script and tests for patch generation (#967) Made a go script that creates a universe file for the `MockResolutionClient` (#909) from the current real deps.dev & OSV data used during in-place / relock / relax computation. This has let me add some real-world in-place & relax patch generation test cases to test for regression without it breaking constantly due to new versions. I've only added one universe because the files are pretty large. The in-place/relax patch generation tests are basically end-to-end tests - it's not really written in a way that makes testing only the patch computation functionality possible. (This might be a code smell, but I don't think it's practical to structure the code in such a way). --- .../__snapshots__/in_place_test.snap | 1168 ++ .../remediation/__snapshots__/relax_test.snap | 265 + .../fixtures/santatracker/package-lock.json | 11948 ++++++++++++ .../fixtures/santatracker/package.json | 66 + .../fixtures/santatracker/universe.yaml | 15686 ++++++++++++++++ internal/remediation/in_place_test.go | 145 + internal/remediation/relax_test.go | 152 + internal/remediation/testmain_test.go | 16 + .../clienttest/mock_resolution_client.go | 4 +- .../generate_mock_resolution_universe/main.go | 297 + 10 files changed, 29745 insertions(+), 2 deletions(-) create mode 100755 internal/remediation/__snapshots__/in_place_test.snap create mode 100755 internal/remediation/__snapshots__/relax_test.snap create mode 100644 internal/remediation/fixtures/santatracker/package-lock.json create mode 100644 internal/remediation/fixtures/santatracker/package.json create mode 100644 internal/remediation/fixtures/santatracker/universe.yaml create mode 100644 internal/remediation/in_place_test.go create mode 100644 internal/remediation/relax_test.go create mode 100644 internal/remediation/testmain_test.go create mode 100644 scripts/generate_mock_resolution_universe/main.go diff --git a/internal/remediation/__snapshots__/in_place_test.snap b/internal/remediation/__snapshots__/in_place_test.snap new file mode 100755 index 00000000000..0333e102106 --- /dev/null +++ b/internal/remediation/__snapshots__/in_place_test.snap @@ -0,0 +1,1168 @@ + +[TestComputeInPlacePatches - 1] +{ + "Patches": [ + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "lodash" + }, + "OrigVersion": "4.17.20", + "NewVersion": "4.17.21" + }, + "Resolved": [ + { + "ID": "GHSA-29mw-wpgm-hmr9", + "AffectedNodes": [ + 338 + ] + }, + { + "ID": "GHSA-35jh-r3h4-6jhm", + "AffectedNodes": [ + 338 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "minimist" + }, + "OrigVersion": "1.2.0", + "NewVersion": "1.2.8" + }, + "Resolved": [ + { + "ID": "GHSA-vh95-rmgr-6w4m", + "AffectedNodes": [ + 357 + ] + }, + { + "ID": "GHSA-xvch-5gv4-984h", + "AffectedNodes": [ + 357 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "acorn" + }, + "OrigVersion": "5.7.3", + "NewVersion": "5.4.1" + }, + "Resolved": [ + { + "ID": "GHSA-6chw-6frg-f759", + "AffectedNodes": [ + 620 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "acorn" + }, + "OrigVersion": "6.0.2", + "NewVersion": "6.4.2" + }, + "Resolved": [ + { + "ID": "GHSA-6chw-6frg-f759", + "AffectedNodes": [ + 133, + 649 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "acorn" + }, + "OrigVersion": "7.1.0", + "NewVersion": "7.4.1" + }, + "Resolved": [ + { + "ID": "GHSA-6chw-6frg-f759", + "AffectedNodes": [ + 595 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "ansi-regex" + }, + "OrigVersion": "3.0.0", + "NewVersion": "3.0.1" + }, + "Resolved": [ + { + "ID": "GHSA-93q8-gq69-wqmw", + "AffectedNodes": [ + 564, + 644 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "dat.gui" + }, + "OrigVersion": "0.7.3", + "NewVersion": "0.7.9" + }, + "Resolved": [ + { + "ID": "GHSA-chwr-hf3w-c984", + "AffectedNodes": [ + 208 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "get-func-name" + }, + "OrigVersion": "2.0.0", + "NewVersion": "2.0.2" + }, + "Resolved": [ + { + "ID": "GHSA-4q6p-r6v2-jvc5", + "AffectedNodes": [ + 264 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "glob-parent" + }, + "OrigVersion": "5.0.0", + "NewVersion": "5.1.2" + }, + "Resolved": [ + { + "ID": "GHSA-ww39-953v-wcq6", + "AffectedNodes": [ + 269 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "json5" + }, + "OrigVersion": "2.1.0", + "NewVersion": "2.2.3" + }, + "Resolved": [ + { + "ID": "GHSA-9c47-m6qq-7p4h", + "AffectedNodes": [ + 329 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "minimist" + }, + "OrigVersion": "1.2.5", + "NewVersion": "1.2.8" + }, + "Resolved": [ + { + "ID": "GHSA-xvch-5gv4-984h", + "AffectedNodes": [ + 580 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "node-fetch" + }, + "OrigVersion": "2.6.6", + "NewVersion": "2.7.0" + }, + "Resolved": [ + { + "ID": "GHSA-r683-j2x4-v87g", + "AffectedNodes": [ + 586, + 591, + 634 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "path-parse" + }, + "OrigVersion": "1.0.6", + "NewVersion": "1.0.7" + }, + "Resolved": [ + { + "ID": "GHSA-hj48-42vr-x3v9", + "AffectedNodes": [ + 398 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "pathval" + }, + "OrigVersion": "1.1.0", + "NewVersion": "1.1.1" + }, + "Resolved": [ + { + "ID": "GHSA-g6ww-v8xp-vmwg", + "AffectedNodes": [ + 400 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "qs" + }, + "OrigVersion": "6.5.2", + "NewVersion": "6.5.3" + }, + "Resolved": [ + { + "ID": "GHSA-hrpp-h998-j3pp", + "AffectedNodes": [ + 422 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "semver" + }, + "OrigVersion": "5.5.1", + "NewVersion": "5.7.2" + }, + "Resolved": [ + { + "ID": "GHSA-c2qf-rxjj-qqgw", + "AffectedNodes": [ + 449 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "semver" + }, + "OrigVersion": "5.6.0", + "NewVersion": "5.7.2" + }, + "Resolved": [ + { + "ID": "GHSA-c2qf-rxjj-qqgw", + "AffectedNodes": [ + 539, + 572 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "semver" + }, + "OrigVersion": "6.3.0", + "NewVersion": "6.3.1" + }, + "Resolved": [ + { + "ID": "GHSA-c2qf-rxjj-qqgw", + "AffectedNodes": [ + 571 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "ws" + }, + "OrigVersion": "6.2.1", + "NewVersion": "6.2.2" + }, + "Resolved": [ + { + "ID": "GHSA-6fc8-4gx4-v693", + "AffectedNodes": [ + 513 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "ws" + }, + "OrigVersion": "7.1.2", + "NewVersion": "7.5.9" + }, + "Resolved": [ + { + "ID": "GHSA-6fc8-4gx4-v693", + "AffectedNodes": [ + 609 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "y18n" + }, + "OrigVersion": "4.0.0", + "NewVersion": "4.0.3" + }, + "Resolved": [ + { + "ID": "GHSA-c4w7-xm78-47vh", + "AffectedNodes": [ + 518 + ] + } + ] + } + ], + "Unfixable": [ + { + "ID": "GHSA-2r2c-g63r-vccr", + "AffectedNodes": [ + 366 + ] + }, + { + "ID": "GHSA-4wf5-vphf-c2xc", + "AffectedNodes": [ + 470 + ] + }, + { + "ID": "GHSA-566m-qj78-rww5", + "AffectedNodes": [ + 406 + ] + }, + { + "ID": "GHSA-5rrq-pxf6-6jx5", + "AffectedNodes": [ + 366 + ] + }, + { + "ID": "GHSA-67hx-6x53-jw92", + "AffectedNodes": [ + 71 + ] + }, + { + "ID": "GHSA-72xf-g2v4-qvf3", + "AffectedNodes": [ + 475 + ] + }, + { + "ID": "GHSA-72xf-g2v4-qvf3", + "AffectedNodes": [ + 607 + ] + }, + { + "ID": "GHSA-72xf-g2v4-qvf3", + "AffectedNodes": [ + 652 + ] + }, + { + "ID": "GHSA-7fh5-64p2-3v2j", + "AffectedNodes": [ + 406 + ] + }, + { + "ID": "GHSA-896r-f27r-55mw", + "AffectedNodes": [ + 326 + ] + }, + { + "ID": "GHSA-8fr3-hfg3-gpgp", + "AffectedNodes": [ + 366 + ] + }, + { + "ID": "GHSA-cfm4-qjh2-4765", + "AffectedNodes": [ + 366 + ] + }, + { + "ID": "GHSA-f4c9-cqv8-9v98", + "AffectedNodes": [ + 323 + ] + }, + { + "ID": "GHSA-f4c9-cqv8-9v98", + "AffectedNodes": [ + 601 + ] + }, + { + "ID": "GHSA-f8q6-p94x-37v3", + "AffectedNodes": [ + 356 + ] + }, + { + "ID": "GHSA-g954-5hwp-pp24", + "AffectedNodes": [ + 415 + ] + }, + { + "ID": "GHSA-gf8q-jrpm-jvxq", + "AffectedNodes": [ + 366 + ] + }, + { + "ID": "GHSA-h755-8qp9-cq85", + "AffectedNodes": [ + 415 + ] + }, + { + "ID": "GHSA-hwj9-h5mp-3pm3", + "AffectedNodes": [ + 406 + ] + }, + { + "ID": "GHSA-p8p7-x288-28g6", + "AffectedNodes": [ + 436 + ] + }, + { + "ID": "GHSA-p9pc-299p-vxgp", + "AffectedNodes": [ + 521 + ] + }, + { + "ID": "GHSA-pfq8-rq6v-vf5m", + "AffectedNodes": [ + 291 + ] + }, + { + "ID": "GHSA-r683-j2x4-v87g", + "AffectedNodes": [ + 365 + ] + }, + { + "ID": "GHSA-v88g-cgmw-v5xw", + "AffectedNodes": [ + 138 + ] + }, + { + "ID": "GHSA-vh5w-fg69-rc8m", + "AffectedNodes": [ + 278 + ] + }, + { + "ID": "GHSA-vh95-rmgr-6w4m", + "AffectedNodes": [ + 615 + ] + }, + { + "ID": "GHSA-w8qv-6jwh-64r5", + "AffectedNodes": [ + 166 + ] + }, + { + "ID": "GHSA-w8qv-6jwh-64r5", + "AffectedNodes": [ + 560 + ] + }, + { + "ID": "GHSA-x4jg-mjrx-434g", + "AffectedNodes": [ + 366 + ] + }, + { + "ID": "GHSA-xvch-5gv4-984h", + "AffectedNodes": [ + 615 + ] + } + ] +} +--- + +[TestComputeInPlacePatches/npm-santatracker - 1] +{ + "Patches": [ + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "lodash" + }, + "OrigVersion": "4.17.20", + "NewVersion": "4.17.21" + }, + "Resolved": [ + { + "ID": "GHSA-29mw-wpgm-hmr9", + "AffectedNodes": [ + 338 + ] + }, + { + "ID": "GHSA-35jh-r3h4-6jhm", + "AffectedNodes": [ + 338 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "minimist" + }, + "OrigVersion": "1.2.0", + "NewVersion": "1.2.8" + }, + "Resolved": [ + { + "ID": "GHSA-vh95-rmgr-6w4m", + "AffectedNodes": [ + 357 + ] + }, + { + "ID": "GHSA-xvch-5gv4-984h", + "AffectedNodes": [ + 357 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "acorn" + }, + "OrigVersion": "5.7.3", + "NewVersion": "5.4.1" + }, + "Resolved": [ + { + "ID": "GHSA-6chw-6frg-f759", + "AffectedNodes": [ + 620 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "acorn" + }, + "OrigVersion": "6.0.2", + "NewVersion": "6.4.2" + }, + "Resolved": [ + { + "ID": "GHSA-6chw-6frg-f759", + "AffectedNodes": [ + 133, + 649 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "acorn" + }, + "OrigVersion": "7.1.0", + "NewVersion": "7.4.1" + }, + "Resolved": [ + { + "ID": "GHSA-6chw-6frg-f759", + "AffectedNodes": [ + 595 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "ansi-regex" + }, + "OrigVersion": "3.0.0", + "NewVersion": "3.0.1" + }, + "Resolved": [ + { + "ID": "GHSA-93q8-gq69-wqmw", + "AffectedNodes": [ + 564, + 644 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "dat.gui" + }, + "OrigVersion": "0.7.3", + "NewVersion": "0.7.9" + }, + "Resolved": [ + { + "ID": "GHSA-chwr-hf3w-c984", + "AffectedNodes": [ + 208 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "get-func-name" + }, + "OrigVersion": "2.0.0", + "NewVersion": "2.0.2" + }, + "Resolved": [ + { + "ID": "GHSA-4q6p-r6v2-jvc5", + "AffectedNodes": [ + 264 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "glob-parent" + }, + "OrigVersion": "5.0.0", + "NewVersion": "5.1.2" + }, + "Resolved": [ + { + "ID": "GHSA-ww39-953v-wcq6", + "AffectedNodes": [ + 269 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "json5" + }, + "OrigVersion": "2.1.0", + "NewVersion": "2.2.3" + }, + "Resolved": [ + { + "ID": "GHSA-9c47-m6qq-7p4h", + "AffectedNodes": [ + 329 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "minimist" + }, + "OrigVersion": "1.2.5", + "NewVersion": "1.2.8" + }, + "Resolved": [ + { + "ID": "GHSA-xvch-5gv4-984h", + "AffectedNodes": [ + 580 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "node-fetch" + }, + "OrigVersion": "2.6.6", + "NewVersion": "2.7.0" + }, + "Resolved": [ + { + "ID": "GHSA-r683-j2x4-v87g", + "AffectedNodes": [ + 586, + 591, + 634 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "path-parse" + }, + "OrigVersion": "1.0.6", + "NewVersion": "1.0.7" + }, + "Resolved": [ + { + "ID": "GHSA-hj48-42vr-x3v9", + "AffectedNodes": [ + 398 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "pathval" + }, + "OrigVersion": "1.1.0", + "NewVersion": "1.1.1" + }, + "Resolved": [ + { + "ID": "GHSA-g6ww-v8xp-vmwg", + "AffectedNodes": [ + 400 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "qs" + }, + "OrigVersion": "6.5.2", + "NewVersion": "6.5.3" + }, + "Resolved": [ + { + "ID": "GHSA-hrpp-h998-j3pp", + "AffectedNodes": [ + 422 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "semver" + }, + "OrigVersion": "5.5.1", + "NewVersion": "5.7.2" + }, + "Resolved": [ + { + "ID": "GHSA-c2qf-rxjj-qqgw", + "AffectedNodes": [ + 449 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "semver" + }, + "OrigVersion": "5.6.0", + "NewVersion": "5.7.2" + }, + "Resolved": [ + { + "ID": "GHSA-c2qf-rxjj-qqgw", + "AffectedNodes": [ + 539, + 572 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "semver" + }, + "OrigVersion": "6.3.0", + "NewVersion": "6.3.1" + }, + "Resolved": [ + { + "ID": "GHSA-c2qf-rxjj-qqgw", + "AffectedNodes": [ + 571 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "ws" + }, + "OrigVersion": "6.2.1", + "NewVersion": "6.2.2" + }, + "Resolved": [ + { + "ID": "GHSA-6fc8-4gx4-v693", + "AffectedNodes": [ + 513 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "ws" + }, + "OrigVersion": "7.1.2", + "NewVersion": "7.5.9" + }, + "Resolved": [ + { + "ID": "GHSA-6fc8-4gx4-v693", + "AffectedNodes": [ + 609 + ] + } + ] + }, + { + "Patch": { + "Pkg": { + "System": 3, + "Name": "y18n" + }, + "OrigVersion": "4.0.0", + "NewVersion": "4.0.3" + }, + "Resolved": [ + { + "ID": "GHSA-c4w7-xm78-47vh", + "AffectedNodes": [ + 518 + ] + } + ] + } + ], + "Unfixable": [ + { + "ID": "GHSA-2r2c-g63r-vccr", + "AffectedNodes": [ + 366 + ] + }, + { + "ID": "GHSA-4wf5-vphf-c2xc", + "AffectedNodes": [ + 470 + ] + }, + { + "ID": "GHSA-566m-qj78-rww5", + "AffectedNodes": [ + 406 + ] + }, + { + "ID": "GHSA-5rrq-pxf6-6jx5", + "AffectedNodes": [ + 366 + ] + }, + { + "ID": "GHSA-67hx-6x53-jw92", + "AffectedNodes": [ + 71 + ] + }, + { + "ID": "GHSA-72xf-g2v4-qvf3", + "AffectedNodes": [ + 475 + ] + }, + { + "ID": "GHSA-72xf-g2v4-qvf3", + "AffectedNodes": [ + 607 + ] + }, + { + "ID": "GHSA-72xf-g2v4-qvf3", + "AffectedNodes": [ + 652 + ] + }, + { + "ID": "GHSA-7fh5-64p2-3v2j", + "AffectedNodes": [ + 406 + ] + }, + { + "ID": "GHSA-896r-f27r-55mw", + "AffectedNodes": [ + 326 + ] + }, + { + "ID": "GHSA-8fr3-hfg3-gpgp", + "AffectedNodes": [ + 366 + ] + }, + { + "ID": "GHSA-cfm4-qjh2-4765", + "AffectedNodes": [ + 366 + ] + }, + { + "ID": "GHSA-f4c9-cqv8-9v98", + "AffectedNodes": [ + 323 + ] + }, + { + "ID": "GHSA-f4c9-cqv8-9v98", + "AffectedNodes": [ + 601 + ] + }, + { + "ID": "GHSA-f8q6-p94x-37v3", + "AffectedNodes": [ + 356 + ] + }, + { + "ID": "GHSA-g954-5hwp-pp24", + "AffectedNodes": [ + 415 + ] + }, + { + "ID": "GHSA-gf8q-jrpm-jvxq", + "AffectedNodes": [ + 366 + ] + }, + { + "ID": "GHSA-h755-8qp9-cq85", + "AffectedNodes": [ + 415 + ] + }, + { + "ID": "GHSA-hwj9-h5mp-3pm3", + "AffectedNodes": [ + 406 + ] + }, + { + "ID": "GHSA-p8p7-x288-28g6", + "AffectedNodes": [ + 436 + ] + }, + { + "ID": "GHSA-p9pc-299p-vxgp", + "AffectedNodes": [ + 521 + ] + }, + { + "ID": "GHSA-pfq8-rq6v-vf5m", + "AffectedNodes": [ + 291 + ] + }, + { + "ID": "GHSA-r683-j2x4-v87g", + "AffectedNodes": [ + 365 + ] + }, + { + "ID": "GHSA-v88g-cgmw-v5xw", + "AffectedNodes": [ + 138 + ] + }, + { + "ID": "GHSA-vh5w-fg69-rc8m", + "AffectedNodes": [ + 278 + ] + }, + { + "ID": "GHSA-vh95-rmgr-6w4m", + "AffectedNodes": [ + 615 + ] + }, + { + "ID": "GHSA-w8qv-6jwh-64r5", + "AffectedNodes": [ + 166 + ] + }, + { + "ID": "GHSA-w8qv-6jwh-64r5", + "AffectedNodes": [ + 560 + ] + }, + { + "ID": "GHSA-x4jg-mjrx-434g", + "AffectedNodes": [ + 366 + ] + }, + { + "ID": "GHSA-xvch-5gv4-984h", + "AffectedNodes": [ + 615 + ] + } + ] +} +--- diff --git a/internal/remediation/__snapshots__/relax_test.snap b/internal/remediation/__snapshots__/relax_test.snap new file mode 100755 index 00000000000..aef428308e4 --- /dev/null +++ b/internal/remediation/__snapshots__/relax_test.snap @@ -0,0 +1,265 @@ + +[TestComputeRelaxPatches/npm-santatracker - 1] +[ + { + "Patch": { + "Deps": [ + { + "Pkg": { + "System": 3, + "Name": "mocha" + }, + "Type": {}, + "OrigRequire": "^5.2.0", + "NewRequire": "^9.2.2", + "OrigResolved": "5.2.0", + "NewResolved": "9.2.2" + } + ], + "EcosystemSpecific": null + }, + "RemovedVulns": [ + { + "ID": "GHSA-f8q6-p94x-37v3", + "AffectedNodes": [ + 571 + ] + }, + { + "ID": "GHSA-vh95-rmgr-6w4m", + "AffectedNodes": [ + 575 + ] + }, + { + "ID": "GHSA-xvch-5gv4-984h", + "AffectedNodes": [ + 575 + ] + } + ], + "AddedVulns": [] + }, + { + "Patch": { + "Deps": [ + { + "Pkg": { + "System": 3, + "Name": "mocha" + }, + "Type": {}, + "OrigRequire": "^5.2.0", + "NewRequire": "^8.4.0", + "OrigResolved": "5.2.0", + "NewResolved": "8.4.0" + } + ], + "EcosystemSpecific": null + }, + "RemovedVulns": [ + { + "ID": "GHSA-vh95-rmgr-6w4m", + "AffectedNodes": [ + 575 + ] + }, + { + "ID": "GHSA-xvch-5gv4-984h", + "AffectedNodes": [ + 575 + ] + } + ], + "AddedVulns": [ + { + "ID": "GHSA-qrpm-p2h7-hrv2", + "AffectedNodes": [ + 578 + ] + } + ] + }, + { + "Patch": { + "Deps": [ + { + "Pkg": { + "System": 3, + "Name": "@google-cloud/cloudbuild" + }, + "Type": {}, + "OrigRequire": "^2.6.0", + "NewRequire": "^4.4.0", + "OrigResolved": "2.6.0", + "NewResolved": "4.4.0" + } + ], + "EcosystemSpecific": null + }, + "RemovedVulns": [ + { + "ID": "GHSA-h755-8qp9-cq85", + "AffectedNodes": [ + 221 + ] + } + ], + "AddedVulns": [] + }, + { + "Patch": { + "Deps": [ + { + "Pkg": { + "System": 3, + "Name": "autoprefixer" + }, + "Type": {}, + "OrigRequire": "^9.3.0", + "NewRequire": "^10.4.19", + "OrigResolved": "9.8.8", + "NewResolved": "10.4.19" + } + ], + "EcosystemSpecific": null + }, + "RemovedVulns": [ + { + "ID": "GHSA-7fh5-64p2-3v2j", + "AffectedNodes": [ + 327 + ] + } + ], + "AddedVulns": [] + }, + { + "Patch": { + "Deps": [ + { + "Pkg": { + "System": 3, + "Name": "google-closure-library" + }, + "Type": {}, + "OrigRequire": "^20190909.0.0", + "NewRequire": "^20200315.0.0", + "OrigResolved": "20190909.0.0", + "NewResolved": "20200315.0.0" + } + ], + "EcosystemSpecific": null + }, + "RemovedVulns": [ + { + "ID": "GHSA-vh5w-fg69-rc8m", + "AffectedNodes": [ + 24 + ] + } + ], + "AddedVulns": [] + }, + { + "Patch": { + "Deps": [ + { + "Pkg": { + "System": 3, + "Name": "terser" + }, + "Type": {}, + "OrigRequire": "^3.10.11", + "NewRequire": "^4.8.1", + "OrigResolved": "3.17.0", + "NewResolved": "4.8.1" + } + ], + "EcosystemSpecific": null + }, + "RemovedVulns": [ + { + "ID": "GHSA-4wf5-vphf-c2xc", + "AffectedNodes": [ + 44 + ] + } + ], + "AddedVulns": [] + }, + { + "Patch": { + "Deps": [ + { + "Pkg": { + "System": 3, + "Name": "yargs" + }, + "Type": {}, + "OrigRequire": "^12.0.2", + "NewRequire": "^13.3.2", + "OrigResolved": "12.0.5", + "NewResolved": "13.3.2" + } + ], + "EcosystemSpecific": null + }, + "RemovedVulns": [ + { + "ID": "GHSA-p9pc-299p-vxgp", + "AffectedNodes": [ + 610 + ] + } + ], + "AddedVulns": [] + }, + { + "Patch": { + "Deps": [ + { + "Pkg": { + "System": 3, + "Name": "mocha" + }, + "Type": {}, + "OrigRequire": "^5.2.0", + "NewRequire": "^6.2.3", + "OrigResolved": "5.2.0", + "NewResolved": "6.2.3" + } + ], + "EcosystemSpecific": null + }, + "RemovedVulns": [ + { + "ID": "GHSA-vh95-rmgr-6w4m", + "AffectedNodes": [ + 575 + ] + }, + { + "ID": "GHSA-xvch-5gv4-984h", + "AffectedNodes": [ + 575 + ] + } + ], + "AddedVulns": [ + { + "ID": "GHSA-2j2x-2gpw-g8fm", + "AffectedNodes": [ + 675 + ] + }, + { + "ID": "GHSA-gxpj-cx7g-858c", + "AffectedNodes": [ + 566 + ] + } + ] + } +] +--- diff --git a/internal/remediation/fixtures/santatracker/package-lock.json b/internal/remediation/fixtures/santatracker/package-lock.json new file mode 100644 index 00000000000..8afd9b960d6 --- /dev/null +++ b/internal/remediation/fixtures/santatracker/package-lock.json @@ -0,0 +1,11948 @@ +{ + "name": "santatracker", + "version": "2021.1.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "santatracker", + "version": "2021.1.0", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/core": "^7.6.0", + "@babel/preset-env": "^7.6.0", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-node-resolve": "^13.0.6", + "@webcomponents/webcomponentsjs": "^2.4.0", + "autoprefixer": "^9.3.0", + "babel-plugin-func-wrap": "^1.1.0", + "chai": "^4.2.0", + "chalk": "^2.4.2", + "clipboardy": "^2.1.0", + "core-js": "^3.3.2", + "custom-event-polyfill": "^1.0.7", + "dat.gui": "^0.7.3", + "dhost": "^0.1.9", + "esm-resolve": "^1.0.6", + "event-target": "^1.2.3", + "fancy-log": "^1.3.2", + "fast-async": "^6.3.8", + "firebase": "^8.10.0", + "git-last-commit": "^1.0.1", + "google-closure-compiler": "^20190909.0.0", + "google-closure-library": "^20190909.0.0", + "html-entities": "^1.2.1", + "html-minifier": "^4.0.0", + "html-modules-polyfill": "^0.1.0", + "iframe-load": "^0.1.4", + "jquery": "^3.5.0", + "jsdom": "^12.2.0", + "json5": "^2.1.0", + "lit-element": "^2.2.1", + "lottie-web": "^5.5.10", + "mime-types": "^2.1.21", + "mocha": "^5.2.0", + "mocha-headless-server": "^0.1.2", + "parse5": "^5.1.0", + "polka": "^0.5.2", + "pretty-ms": "^4.0.0", + "regenerator-runtime": "^0.13.3", + "rimraf": "^3.0.2", + "rollup": "^2.59.0", + "sass": "^1.22.9", + "terser": "^3.10.11", + "tmp": "^0.0.33", + "unistore": "^3.4.1", + "web-animations-js": "^2.3.1", + "whatwg-fetch": "^3.0.0", + "yargs": "^12.0.2" + }, + "devDependencies": { + "@google-cloud/cloudbuild": "^2.6.0", + "@google-cloud/error-reporting": "^2.0.4" + } + }, + "node_modules/@arr/every": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@arr/every/-/every-1.0.0.tgz", + "integrity": "sha1-MU+BaPUK5IoDLP2tX9tDb0ZKl6w=", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.0.0" + } + }, + "node_modules/@babel/core": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.0.tgz", + "integrity": "sha512-FuRhDRtsd6IptKpHXAa+4WPZYY2ZzgowkbLBecEDDSje1X/apG7jQM33or3NdOmjXBKWGOg4JmSiRfUfuTtHXw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.6.0", + "@babel/helpers": "^7.6.0", + "@babel/parser": "^7.6.0", + "@babel/template": "^7.6.0", + "@babel/traverse": "^7.6.0", + "@babel/types": "^7.6.0", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.0.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/template": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", + "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/template/node_modules/@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.0.0" + } + }, + "node_modules/@babel/core/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.0.tgz", + "integrity": "sha512-Ms8Mo7YBdMMn1BYuNtKuP/z0TgEIhbcyB8HVR6PPNYp4P61lMsABiS4A3VG1qznjXVCf3r+fVHhm4efTYVsySA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.6.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "node_modules/@babel/generator/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", + "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure/node_modules/@babel/types": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", + "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==", + "license": "MIT", + "dependencies": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", + "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", + "license": "MIT", + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor/node_modules/@babel/types": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", + "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==", + "license": "MIT", + "dependencies": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@babel/helper-call-delegate": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz", + "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-hoist-variables": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" + } + }, + "node_modules/@babel/helper-define-map": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz", + "integrity": "sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg==", + "license": "MIT", + "dependencies": { + "@babel/helper-function-name": "^7.1.0", + "@babel/types": "^7.5.5", + "lodash": "^4.17.13" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", + "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression/node_modules/@babel/types": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", + "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==", + "license": "MIT", + "dependencies": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "license": "MIT", + "dependencies": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@babel/helper-function-name/node_modules/@babel/types": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", + "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==", + "license": "MIT", + "dependencies": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@babel/helper-get-function-arity/node_modules/@babel/types": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", + "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==", + "license": "MIT", + "dependencies": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", + "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.4.4" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz", + "integrity": "sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.5.5" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", + "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@babel/helper-module-imports/node_modules/@babel/types": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", + "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==", + "license": "MIT", + "dependencies": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz", + "integrity": "sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/types": "^7.5.5", + "lodash": "^4.17.13" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/template": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", + "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", + "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/types": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", + "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==", + "license": "MIT", + "dependencies": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "license": "MIT" + }, + "node_modules/@babel/helper-regex": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz", + "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.13" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", + "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-wrap-function": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/types": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", + "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==", + "license": "MIT", + "dependencies": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz", + "integrity": "sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.5.5", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/traverse": "^7.5.5", + "@babel/types": "^7.5.5" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", + "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access/node_modules/@babel/types": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", + "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==", + "license": "MIT", + "dependencies": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", + "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.4.4" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", + "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-function-name": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.2.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.6.0.tgz", + "integrity": "sha512-W9kao7OBleOjfXtFGgArGRX6eCP0UEcA2ZWEWNkJdRZnHhW4eEbeswbG3EwaRsnQUAEGWYgMq1HsIXuNNNy2eQ==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.6.0", + "@babel/traverse": "^7.6.0", + "@babel/types": "^7.6.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/template": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", + "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "license": "MIT", + "dependencies": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.0.tgz", + "integrity": "sha512-+o2q111WEx4srBs7L9eJmcwi655eD8sXniLqMB93TBK9GrNzGrxDWSjiqz2hLU0Ha8MTXFIP0yd9fNdP+m43ZQ==", + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", + "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0", + "@babel/plugin-syntax-async-generators": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz", + "integrity": "sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", + "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-json-strings": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz", + "integrity": "sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz", + "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.5.4" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", + "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", + "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", + "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", + "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", + "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz", + "integrity": "sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", + "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.0.tgz", + "integrity": "sha512-tIt4E23+kw6TgL/edACZwP1OUKrjOTyMrFMLoT5IOFrfMRabCgekjqFd5o6PaAMildBu46oFkekIdMuGkkPEpA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "lodash": "^4.17.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz", + "integrity": "sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-define-map": "^7.5.5", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.5.5", + "@babel/helper-split-export-declaration": "^7.4.4", + "globals": "^11.1.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", + "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz", + "integrity": "sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz", + "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.5.4" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz", + "integrity": "sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", + "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", + "license": "MIT", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", + "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", + "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", + "license": "MIT", + "dependencies": { + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", + "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", + "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz", + "integrity": "sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0", + "babel-plugin-dynamic-import-node": "^2.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.6.0.tgz", + "integrity": "sha512-Ma93Ix95PNSEngqomy5LSBMAQvYKVe3dy+JlVJSHEXZR5ASL9lQBedMiCyVtmTLraIDVRE3ZjTZvmXXD2Ozw3g==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.4.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0", + "babel-plugin-dynamic-import-node": "^2.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz", + "integrity": "sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg==", + "license": "MIT", + "dependencies": { + "@babel/helper-hoist-variables": "^7.4.4", + "@babel/helper-plugin-utils": "^7.0.0", + "babel-plugin-dynamic-import-node": "^2.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", + "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.0.tgz", + "integrity": "sha512-jem7uytlmrRl3iCAuQyw8BpB4c4LWvSpvIeXKpMb+7j84lkx4m4mYr5ErAcmN5KM7B6BqrAvRGjBIbbzqCczew==", + "license": "MIT", + "dependencies": { + "regexp-tree": "^0.1.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz", + "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz", + "integrity": "sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.5.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", + "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", + "license": "MIT", + "dependencies": { + "@babel/helper-call-delegate": "^7.4.4", + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", + "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz", + "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==", + "license": "MIT", + "dependencies": { + "regenerator-transform": "^0.14.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", + "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", + "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", + "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", + "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", + "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", + "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz", + "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.5.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.6.0.tgz", + "integrity": "sha512-1efzxFv/TcPsNXlRhMzRnkBFMeIqBBgzwmZwlFDw5Ubj0AGLeufxugirwZmkkX/ayi3owsSqoQ4fw8LkfK9SYg==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-dynamic-import": "^7.5.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.5.5", + "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-syntax-json-strings": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-transform-arrow-functions": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.5.0", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.6.0", + "@babel/plugin-transform-classes": "^7.5.5", + "@babel/plugin-transform-computed-properties": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.6.0", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/plugin-transform-duplicate-keys": "^7.5.0", + "@babel/plugin-transform-exponentiation-operator": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.4.4", + "@babel/plugin-transform-function-name": "^7.4.4", + "@babel/plugin-transform-literals": "^7.2.0", + "@babel/plugin-transform-member-expression-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.5.0", + "@babel/plugin-transform-modules-commonjs": "^7.6.0", + "@babel/plugin-transform-modules-systemjs": "^7.5.0", + "@babel/plugin-transform-modules-umd": "^7.2.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.6.0", + "@babel/plugin-transform-new-target": "^7.4.4", + "@babel/plugin-transform-object-super": "^7.5.5", + "@babel/plugin-transform-parameters": "^7.4.4", + "@babel/plugin-transform-property-literals": "^7.2.0", + "@babel/plugin-transform-regenerator": "^7.4.5", + "@babel/plugin-transform-reserved-words": "^7.2.0", + "@babel/plugin-transform-shorthand-properties": "^7.2.0", + "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-sticky-regex": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.4.4", + "@babel/plugin-transform-typeof-symbol": "^7.2.0", + "@babel/plugin-transform-unicode-regex": "^7.4.4", + "@babel/types": "^7.6.0", + "browserslist": "^4.6.0", + "core-js-compat": "^3.1.1", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@babel/template": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.1.2.tgz", + "integrity": "sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.1.2", + "@babel/types": "^7.1.2" + } + }, + "node_modules/@babel/template/node_modules/@babel/parser": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.2.tgz", + "integrity": "sha512-x5HFsW+E/nQalGMw7hu+fvPqnBeBaIr0lWJ2SG0PPL2j+Pm9lYvCrsZJGIgauPIENx0v10INIyFjmSNUD/gSqQ==", + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/template/node_modules/@babel/types": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", + "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==", + "license": "MIT", + "dependencies": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.0.tgz", + "integrity": "sha512-93t52SaOBgml/xY74lsmt7xOR4ufYvhb5c5qiM6lu4J/dWGMAfAh6eKw4PjLes6DI6nQgearoxnFJk60YchpvQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.6.0", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz", + "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==", + "license": "MIT", + "dependencies": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@firebase/analytics": { + "version": "0.6.18", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.6.18.tgz", + "integrity": "sha512-FXNtYDxbs9ynPbzUVuG94BjFPOPpgJ7156660uvCBuKgoBCIVcNqKkJQQ7TH8384fqvGjbjdcgARY9jgAHbtog==", + "dependencies": { + "@firebase/analytics-types": "0.6.0", + "@firebase/component": "0.5.6", + "@firebase/installations": "0.4.32", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.3.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/analytics-types": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.6.0.tgz", + "integrity": "sha512-kbMawY0WRPyL/lbknBkme4CNLl+Gw+E9G4OpNeXAauqoQiNkBgpIvZYy7BRT4sNGhZbxdxXxXbruqUwDzLmvTw==" + }, + "node_modules/@firebase/app": { + "version": "0.6.30", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.6.30.tgz", + "integrity": "sha512-uAYEDXyK0mmpZ8hWQj5TNd7WVvfsU8PgsqKpGljbFBG/HhsH8KbcykWAAA+c1PqL7dt/dbt0Reh1y9zEdYzMhg==", + "dependencies": { + "@firebase/app-types": "0.6.3", + "@firebase/component": "0.5.6", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.3.0", + "dom-storage": "2.1.0", + "tslib": "^2.1.0", + "xmlhttprequest": "1.8.0" + } + }, + "node_modules/@firebase/app-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.3.2.tgz", + "integrity": "sha512-YjpsnV1xVTO1B836IKijRcDeceLgHQNJ/DWa+Vky9UHkm1Mi4qosddX8LZzldaWRTWKX7BN1MbZOLY8r7M/MZQ==", + "dependencies": { + "@firebase/app-check-interop-types": "0.1.0", + "@firebase/app-check-types": "0.3.1", + "@firebase/component": "0.5.6", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.3.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/app-check-interop-types": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.1.0.tgz", + "integrity": "sha512-uZfn9s4uuRsaX5Lwx+gFP3B6YsyOKUE+Rqa6z9ojT4VSRAsZFko9FRn6OxQUA1z5t5d08fY4pf+/+Dkd5wbdbA==" + }, + "node_modules/@firebase/app-check-types": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.3.1.tgz", + "integrity": "sha512-KJ+BqJbdNsx4QT/JIT1yDj5p6D+QN97iJs3GuHnORrqL+DU3RWc9nSYQsrY6Tv9jVWcOkMENXAgDT484vzsm2w==" + }, + "node_modules/@firebase/app-types": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.3.tgz", + "integrity": "sha512-/M13DPPati7FQHEQ9Minjk1HGLm/4K4gs9bR4rzLCWJg64yGtVC0zNg9gDpkw9yc2cvol/mNFxqTtd4geGrwdw==" + }, + "node_modules/@firebase/auth": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.16.8.tgz", + "integrity": "sha512-mR0UXG4LirWIfOiCWxVmvz1o23BuKGxeItQ2cCUgXLTjNtWJXdcky/356iTUsd7ZV5A78s2NHeN5tIDDG6H4rg==", + "dependencies": { + "@firebase/auth-types": "0.10.3" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/auth-interop-types": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.6.tgz", + "integrity": "sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/auth-types": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.10.3.tgz", + "integrity": "sha512-zExrThRqyqGUbXOFrH/sowuh2rRtfKHp9SBVY2vOqKWdCX1Ztn682n9WLtlUDsiYVIbBcwautYWk2HyCGFv0OA==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/component": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.6.tgz", + "integrity": "sha512-GyQJ+2lrhsDqeGgd1VdS7W+Y6gNYyI0B51ovNTxeZVG/W8I7t9MwEiCWsCvfm5wQgfsKp9dkzOcJrL5k8oVO/Q==", + "dependencies": { + "@firebase/util": "1.3.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.11.0.tgz", + "integrity": "sha512-b/kwvCubr6G9coPlo48PbieBDln7ViFBHOGeVt/bt82yuv5jYZBEYAac/mtOVSxpf14aMo/tAN+Edl6SWqXApw==", + "dependencies": { + "@firebase/auth-interop-types": "0.1.6", + "@firebase/component": "0.5.6", + "@firebase/database-types": "0.8.0", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.3.0", + "faye-websocket": "0.11.3", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database-types": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.8.0.tgz", + "integrity": "sha512-7IdjAFRfPWyG3b4wcXyghb3Y1CLCSJFZIg1xl5GbTVMttSQFT4B5NYdhsfA34JwAsv5pMzPpjOaS3/K9XJ2KiA==", + "dependencies": { + "@firebase/app-types": "0.6.3", + "@firebase/util": "1.3.0" + } + }, + "node_modules/@firebase/firestore": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-2.4.0.tgz", + "integrity": "sha512-PQ6+lWNrvh74GvFTHT4gCutFipDmtu8D1tNNawKe+/SyL6XFgeuMYgZIpKQgkTSezVDogC7EGQTJBFnewF9pOg==", + "dependencies": { + "@firebase/component": "0.5.6", + "@firebase/firestore-types": "2.4.0", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.3.0", + "@firebase/webchannel-wrapper": "0.5.1", + "@grpc/grpc-js": "^1.3.2", + "@grpc/proto-loader": "^0.6.0", + "node-fetch": "2.6.1", + "tslib": "^2.1.0" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/firestore-types": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-2.4.0.tgz", + "integrity": "sha512-0dgwfuNP7EN6/OlK2HSNSQiQNGLGaRBH0gvgr1ngtKKJuJFuq0Z48RBMeJX9CGjV4TP9h2KaB+KrUKJ5kh1hMg==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/functions": { + "version": "0.6.15", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.6.15.tgz", + "integrity": "sha512-b7RpLwFXi0N+HgkfK8cmkarSOoBeSrc1jNdadkCacQt+vIePkKM3E9EJXF4roWSa8GwTruodpBsvH+lK9iCAKQ==", + "dependencies": { + "@firebase/component": "0.5.6", + "@firebase/functions-types": "0.4.0", + "@firebase/messaging-types": "0.5.0", + "node-fetch": "2.6.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/functions-types": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.4.0.tgz", + "integrity": "sha512-3KElyO3887HNxtxNF1ytGFrNmqD+hheqjwmT3sI09FaDCuaxGbOnsXAXH2eQ049XRXw9YQpHMgYws/aUNgXVyQ==" + }, + "node_modules/@firebase/installations": { + "version": "0.4.32", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.4.32.tgz", + "integrity": "sha512-K4UlED1Vrhd2rFQQJih+OgEj8OTtrtH4+Izkx7ip2bhXSc+unk8ZhnF69D0kmh7zjXAqEDJrmHs9O5fI3rV6Tw==", + "dependencies": { + "@firebase/component": "0.5.6", + "@firebase/installations-types": "0.3.4", + "@firebase/util": "1.3.0", + "idb": "3.0.2", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/installations-types": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.3.4.tgz", + "integrity": "sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q==", + "peerDependencies": { + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.2.6.tgz", + "integrity": "sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw==" + }, + "node_modules/@firebase/messaging": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.8.0.tgz", + "integrity": "sha512-hkFHDyVe1kMcY9KEG+prjCbvS6MtLUgVFUbbQqq7JQfiv58E07YCzRUcMrJolbNi/1QHH6Jv16DxNWjJB9+/qA==", + "dependencies": { + "@firebase/component": "0.5.6", + "@firebase/installations": "0.4.32", + "@firebase/messaging-types": "0.5.0", + "@firebase/util": "1.3.0", + "idb": "3.0.2", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/messaging-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.5.0.tgz", + "integrity": "sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg==", + "peerDependencies": { + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/performance": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.4.18.tgz", + "integrity": "sha512-lvZW/TVDne2TyOpWbv++zjRn277HZpbjxbIPfwtnmKjVY1gJ+H77Qi1c2avVIc9hg80uGX/5tNf4pOApNDJLVg==", + "dependencies": { + "@firebase/component": "0.5.6", + "@firebase/installations": "0.4.32", + "@firebase/logger": "0.2.6", + "@firebase/performance-types": "0.0.13", + "@firebase/util": "1.3.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/performance-types": { + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.0.13.tgz", + "integrity": "sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA==" + }, + "node_modules/@firebase/polyfill": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.36.tgz", + "integrity": "sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg==", + "dependencies": { + "core-js": "3.6.5", + "promise-polyfill": "8.1.3", + "whatwg-fetch": "2.0.4" + } + }, + "node_modules/@firebase/polyfill/node_modules/whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + }, + "node_modules/@firebase/remote-config": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.1.43.tgz", + "integrity": "sha512-laNM4MN0CfeSp7XCVNjYOC4DdV6mj0l2rzUh42x4v2wLTweCoJ/kc1i4oWMX9TI7Jw8Am5Wl71Awn1J2pVe5xA==", + "dependencies": { + "@firebase/component": "0.5.6", + "@firebase/installations": "0.4.32", + "@firebase/logger": "0.2.6", + "@firebase/remote-config-types": "0.1.9", + "@firebase/util": "1.3.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/remote-config-types": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz", + "integrity": "sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA==" + }, + "node_modules/@firebase/storage": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.7.0.tgz", + "integrity": "sha512-ebDFKJbM5HOxVtZV+RhVEBVtlWHK+Z5L3kA5uDBA2jMYcn+8NV/crozJnEE+iRsGEco6dLK5JS+Er4qtKLpH5A==", + "dependencies": { + "@firebase/component": "0.5.6", + "@firebase/storage-types": "0.5.0", + "@firebase/util": "1.3.0", + "node-fetch": "2.6.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/storage-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.5.0.tgz", + "integrity": "sha512-6Wv3Lu7s18hsgW7HG4BFwycTquZ3m/C8bjBoOsmPu0TD6M1GKwCzOC7qBdN7L6tRYPh8ipTj5+rPFrmhGfUVKA==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/util": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.3.0.tgz", + "integrity": "sha512-SESvmYwuKOVCZ1ZxLbberbx+9cnbxpCa4CG2FUSQYqN6Ab8KyltegMDIsqMw5KyIBZ4n1phfHoOa22xo5NzAlQ==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/webchannel-wrapper": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.5.1.tgz", + "integrity": "sha512-dZMzN0uAjwJXWYYAcnxIwXqRTZw3o14hGe7O6uhwjD1ZQWPVYA5lASgnNskEBra0knVBsOXB4KXg+HnlKewN/A==" + }, + "node_modules/@google-cloud/cloudbuild": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@google-cloud/cloudbuild/-/cloudbuild-2.6.0.tgz", + "integrity": "sha512-+MKgIJ6MEomk5KF14PYUXQzkW3BDY+eMzsoxExkwnAQEFdrgrfnDTuLEpBWdP37ywAmTi8DSrtCy4pNtwZBiqA==", + "dev": true, + "dependencies": { + "google-gax": "^2.24.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@google-cloud/common": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-3.8.0.tgz", + "integrity": "sha512-E//DWaZ0NyQWosP1NV5lhOoSR83dNCgAb9xKxL3qp75WhePDkiC3da4BR6v/JDBjOFqh+rrmBhQ8oqZi0yDmuA==", + "dev": true, + "dependencies": { + "@google-cloud/projectify": "^2.0.0", + "@google-cloud/promisify": "^2.0.0", + "arrify": "^2.0.1", + "duplexify": "^4.1.1", + "ent": "^2.2.0", + "extend": "^3.0.2", + "google-auth-library": "^7.9.2", + "retry-request": "^4.2.2", + "teeny-request": "^7.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@google-cloud/error-reporting": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@google-cloud/error-reporting/-/error-reporting-2.0.4.tgz", + "integrity": "sha512-suC84m1eEeXc+oQza3mQiLXDkCuh+K/7z7Ulm39NBHvBO2zC4wZVEjk0de+CA2EEoZtbh/SufVc8mXdJfTu5iQ==", + "dev": true, + "dependencies": { + "@google-cloud/common": "^3.0.0", + "console-log-level": "^1.4.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@google-cloud/projectify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.1.1.tgz", + "integrity": "sha512-+rssMZHnlh0twl122gXY4/aCrk0G1acBqkHFfYddtsqpYXGxA29nj9V5V9SfC+GyOG00l650f6lG9KL+EpFEWQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@google-cloud/promisify": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.4.tgz", + "integrity": "sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@grpc/grpc-js": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.4.2.tgz", + "integrity": "sha512-aUN6oGk9un8rfYWz73nQgFxPCYJQYd8LpIGguZHBsNduBMyqG6EWANrsVBuTG+nl/l4dKb3x+qi1l9+oxDxqGg==", + "dependencies": { + "@grpc/proto-loader": "^0.6.4", + "@types/node": ">=12.12.47" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, + "node_modules/@grpc/grpc-js/node_modules/@types/node": { + "version": "16.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", + "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==" + }, + "node_modules/@grpc/proto-loader": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.6.tgz", + "integrity": "sha512-cdMaPZ8AiFz6ua6PUbP+LKbhwJbFXnrQ/mlnKGUyzDUZ3wp7vPLksnmLCBX6SHgSmjX7CbNVNLFYD5GmmjO4GQ==", + "dependencies": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^6.10.0", + "yargs": "^16.1.1" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@grpc/proto-loader/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@grpc/proto-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@grpc/proto-loader/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/@grpc/proto-loader/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@grpc/proto-loader/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@grpc/proto-loader/node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/@grpc/proto-loader/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@grpc/proto-loader/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@grpc/proto-loader/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@grpc/proto-loader/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@grpc/proto-loader/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@grpc/proto-loader/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@grpc/proto-loader/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@polka/url": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-0.5.0.tgz", + "integrity": "sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==", + "license": "MIT" + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=", + "license": "BSD-3-Clause" + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.38.3" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^2.42.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "license": "MIT" + }, + "node_modules/@types/long": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" + }, + "node_modules/@types/node": { + "version": "12.6.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.9.tgz", + "integrity": "sha512-+YB9FtyxXGyD54p8rXwWaN1EWEyar5L58GlGWgtH2I9rGmLGBQcw63+0jw+ujqVavNuO47S1ByAjm9zdHMnskw==", + "license": "MIT" + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@webcomponents/webcomponentsjs": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@webcomponents/webcomponentsjs/-/webcomponentsjs-2.4.0.tgz", + "integrity": "sha512-kEClEz2nu9/i6SvyBJTV4pCc6CyCzMhK7zEeJ6QhiJoulBp4YZ06Zfj2E2HUXfWfHJIjtKriJYMtfhettKEjEg==", + "license": "BSD-3-Clause" + }, + "node_modules/abab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", + "license": "SEE LICENSE IN LICENSE.md" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.2.tgz", + "integrity": "sha512-GXmKIvbrN3TV7aVqAzVFaMW8F8wzVX7voEBRO3bDA64+EX37YSayggRJP5Xig6HYHBkWKpFg9W5gg6orklubhg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-es7-plugin": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz", + "integrity": "sha1-8u4fMiipDurRJF+asZIusucdM2s=", + "license": "MIT" + }, + "node_modules/acorn-globals": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz", + "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==", + "license": "MIT", + "dependencies": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "node_modules/acorn-walk": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.0.tgz", + "integrity": "sha512-ugTb7Lq7u4GfWSqqpwE0bGyoBZNMTok/zDBXxfEG0QM50jNlGhIWjRC1pPN7bvV1anhF+bs+/gNcRw+o55Evbg==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "license": "MIT", + "dependencies": { + "es6-promisify": "^5.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "license": "MIT", + "dependencies": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "node_modules/ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "license": "MIT", + "dependencies": { + "ansi-wrap": "0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.0.3.tgz", + "integrity": "sha512-c6IvoeBECQlMVuYUjSwimnhmztImpErfxJzWZhIQinIvQWoGOnB0dLIgifbPHQt5heS6mNlaZG16f06H3C8t1g==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "node_modules/arch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz", + "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==", + "license": "MIT" + }, + "node_modules/array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "license": "MIT" + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "license": "MIT" + }, + "node_modules/autoprefixer": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.3.0.tgz", + "integrity": "sha512-rpp+REfk0Ii3lCoiXhU4+CGYn8FbYckmvj6JJbJGSdzaxYCGJ7EvpHncDqgfAn/P6XhWig4u9BBNnsFAfAd5wg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.3.2", + "caniuse-lite": "^1.0.30000898", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.5", + "postcss-value-parser": "^3.3.1" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/autoprefixer/node_modules/browserslist": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.3.2.tgz", + "integrity": "sha512-wgZJWlYcDvsjRtf8socmAHf1nXq88KrQLB/gMYHGPUc2bzPWsgltSXwPWYHx4Sw0G9E/XGNW5wJDaWlpHRMpjA==", + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30000898", + "electron-to-chromium": "^1.3.80", + "node-releases": "^1.0.0-alpha.14" + }, + "bin": { + "browserslist": "cli.js" + } + }, + "node_modules/autoprefixer/node_modules/electron-to-chromium": { + "version": "1.3.81", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.81.tgz", + "integrity": "sha512-+rym2xtzwPWmoi8AYRrCdW65QOT0vfUHjZb5mjgh0VLyj31pGM3CpP3znKhQNBzQaWujR/KEl/mfC2lnKYgADA==", + "license": "ISC" + }, + "node_modules/autoprefixer/node_modules/node-releases": { + "version": "1.0.0-alpha.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.0.0-alpha.14.tgz", + "integrity": "sha512-G8nnF9cP9QPP/jUmYWw/uUUhumHmkm+X/EarCugYFjYm2uXRMFeOD6CVT3RLdoyCvDUNy51nirGfUItKWs/S1g==", + "license": "CC-BY-4.0", + "dependencies": { + "semver": "^5.3.0" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "license": "MIT" + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "license": "MIT", + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-func-wrap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-func-wrap/-/babel-plugin-func-wrap-1.1.0.tgz", + "integrity": "sha512-C6e8mUVg3c/o9LwGk3tYvRq8MlyZdqimtQHzcZdsb2nEywlOkmp3zlCllo8QAmcsnwSB30iEcZ6rr2AhhTwO3w==", + "license": "CC0-1.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bignumber.js": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", + "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", + "license": "BSD-2-Clause" + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "license": "ISC" + }, + "node_modules/browserslist": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.0.tgz", + "integrity": "sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA==", + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30000989", + "electron-to-chromium": "^1.3.247", + "node-releases": "^1.1.29" + }, + "bin": { + "browserslist": "cli.js" + } + }, + "node_modules/browserslist/node_modules/caniuse-lite": { + "version": "1.0.30000989", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz", + "integrity": "sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw==", + "license": "CC-BY-4.0" + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", + "dev": true + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "license": "MIT" + }, + "node_modules/builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "license": "MIT", + "dependencies": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "node_modules/camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30000898", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000898.tgz", + "integrity": "sha512-ytlTZqO4hYe4rNAJhMynUAIUI33jsP2Bb1two/9OVC39wZjPZ8exIO0eCLw5mqAtegOGiGF0kkTWTn3B02L+mw==", + "license": "CC-BY-4.0" + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "license": "Apache-2.0" + }, + "node_modules/chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "license": "MIT", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.0.2.tgz", + "integrity": "sha512-c4PR2egjNjI1um6bamCQ6bUNPDiyofNQruHvKgHQ4gDUP/ITSVSzNsiI5OWtHOsX323i5ha/kk4YmOZ1Ktg7KA==", + "license": "MIT", + "dependencies": { + "anymatch": "^3.0.1", + "braces": "^3.0.2", + "glob-parent": "^5.0.0", + "is-binary-path": "^2.1.0", + "is-glob": "^4.0.1", + "normalize-path": "^3.0.0", + "readdirp": "^3.1.1" + }, + "engines": { + "node": ">= 8" + }, + "optionalDependencies": { + "fsevents": "^2.0.6" + } + }, + "node_modules/clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/clipboardy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.1.0.tgz", + "integrity": "sha512-2pzOUxWcLlXWtn+Jd6js3o12TysNOOVes/aQfg+MT/35vrxWzedHlLwyoJpXjsFKWm95BTNEcMGD9+a7mKzZkQ==", + "license": "MIT", + "dependencies": { + "arch": "^2.1.1", + "execa": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "license": "ISC", + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "license": "MIT", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "license": "MIT", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "license": "MIT" + }, + "node_modules/cloneable-readable": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", + "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "node_modules/cloneable-readable/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "license": "ISC" + }, + "node_modules/cloneable-readable/node_modules/process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "license": "MIT" + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "license": "MIT" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/combined-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "license": "MIT" + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/console-log-level": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/console-log-level/-/console-log-level-1.4.1.tgz", + "integrity": "sha512-VZzbIORbP+PPcN/gg3DXClTLPLg5Slwd5fL2MIc+o1qZ4BXBvWyc6QxPk6T/Mkr6IVjRpoAGf32XxP3ZWMVRcQ==", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.2.1.tgz", + "integrity": "sha512-MwPZle5CF9dEaMYdDeWm73ao/IflDH+FjeJCWEADcEgFSE9TLimFKwJsfmkwzI8eC0Aj0mgvMDjeQjrElkz4/A==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.6.6", + "semver": "^6.3.0" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/cross-spawn/node_modules/semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/cssom": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz", + "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==", + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.1.1.tgz", + "integrity": "sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==", + "license": "MIT", + "dependencies": { + "cssom": "0.3.x" + } + }, + "node_modules/custom-event-polyfill": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/custom-event-polyfill/-/custom-event-polyfill-1.0.7.tgz", + "integrity": "sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w==", + "license": "MIT" + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dat.gui": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/dat.gui/-/dat.gui-0.7.3.tgz", + "integrity": "sha512-VfVWUcuTwae6/MTia/s2aPB1NLZXA2Gz6PiVyYOrVfODbXJLNAkVjn0aiuxx08cR68ucOuwrNXXt0m9MNVJvkQ==", + "license": "Apache-2.0" + }, + "node_modules/data-urls": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.0.1.tgz", + "integrity": "sha512-0HdcMZzK6ubMUnsMmQmG0AcLQPvbvb47R0+7CCZQCYgcd8OUWG91CG7sM6GoXgjz+WLl4ArFzHtBMy/QqSF4eg==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^7.0.0" + } + }, + "node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "license": "MIT", + "dependencies": { + "xregexp": "4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "license": "MIT", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "license": "MIT", + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dhost": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/dhost/-/dhost-0.1.9.tgz", + "integrity": "sha512-/MYMqdeIst8n5h6/nUwGu1WqwU5zwQAIP9W9X2u2NjKqPIx0fBFdoCm+4BeQ5hSt8zdJMX2JJUqnHyM/+hXrHQ==", + "dependencies": { + "bytes": "^3.1.0", + "chalk": "^2.4.2", + "clipboardy": "^1.2.3", + "he": "^1.2.0", + "mime": "^2.4.0", + "mri": "^1.1.4" + }, + "bin": { + "dhost": "bin/index.js" + } + }, + "node_modules/dhost/node_modules/clipboardy": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz", + "integrity": "sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==", + "dependencies": { + "arch": "^2.1.0", + "execa": "^0.8.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/dhost/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/dhost/node_modules/execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==", + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dom-storage": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz", + "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==", + "engines": { + "node": "*" + } + }, + "node_modules/domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "license": "MIT", + "dependencies": { + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/duplexify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + }, + "node_modules/duplexify/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.3.264", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.264.tgz", + "integrity": "sha512-z8E7WkrrquCuGYv+kKyybuZIbdms+4PeHp7Zm2uIgEhAigP0bOwqXILItwj0YO73o+QyHY/7XtEfP5DsHOWQgQ==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "license": "MIT" + }, + "node_modules/es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "license": "MIT", + "dependencies": { + "es6-promise": "^4.0.3" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", + "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esm-resolve": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/esm-resolve/-/esm-resolve-1.0.6.tgz", + "integrity": "sha512-EfPWOVgTsfaIlN4VdliGmgcaAT8b5OHF79HHdI8/2yJKRcNnLsISlmbzG9XtfvguZnKuXEmS53gJJktkaBKxfA==" + }, + "node_modules/esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/event-target": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/event-target/-/event-target-1.2.3.tgz", + "integrity": "sha512-ImybBIuODDMQKeSDX3wS0+cCpcb/bmE3Ve+IvKqQTTuCc5RBS+ERM7J2eTJTX8v2hJfnGO9x5bJT9GS6t9tV4A==", + "license": "ISC" + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "license": "BSD-2-Clause", + "dependencies": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + } + }, + "node_modules/extract-zip/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/extract-zip/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "license": "MIT" + }, + "node_modules/extract-zip/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/fancy-log": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", + "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", + "license": "MIT", + "dependencies": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "time-stamp": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fast-async": { + "version": "6.3.8", + "resolved": "https://registry.npmjs.org/fast-async/-/fast-async-6.3.8.tgz", + "integrity": "sha512-TjlooyqrYm/gOXjD2UHNwfrWkvTbzU105Nk4bvcRTeRoL+wIeK6rqbqDg3CN9z5p37cE2iXhP6SxQFz8OVIaUg==", + "license": "BSD-2-Clause", + "dependencies": { + "nodent-compiler": "^3.2.10", + "nodent-runtime": ">=3.2.1" + } + }, + "node_modules/fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "license": "MIT" + }, + "node_modules/fast-text-encoding": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz", + "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==", + "dev": true + }, + "node_modules/fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", + "license": "MIT", + "dependencies": { + "punycode": "^1.3.2" + } + }, + "node_modules/fast-url-parser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "license": "MIT" + }, + "node_modules/faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/firebase": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-8.10.0.tgz", + "integrity": "sha512-GCABTbJdo88QgzX5OH/vsfKBWvTRbLUylGlYXtO7uYo1VErfGd2BWW9ATlJP5Gxx+ClDfyvVTvcs2rcNWn3uUA==", + "dependencies": { + "@firebase/analytics": "0.6.18", + "@firebase/app": "0.6.30", + "@firebase/app-check": "0.3.2", + "@firebase/app-types": "0.6.3", + "@firebase/auth": "0.16.8", + "@firebase/database": "0.11.0", + "@firebase/firestore": "2.4.0", + "@firebase/functions": "0.6.15", + "@firebase/installations": "0.4.32", + "@firebase/messaging": "0.8.0", + "@firebase/performance": "0.4.18", + "@firebase/polyfill": "0.3.36", + "@firebase/remote-config": "0.1.43", + "@firebase/storage": "0.7.0", + "@firebase/util": "1.3.0" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "license": "MIT" + }, + "node_modules/gaxios": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.2.tgz", + "integrity": "sha512-T+ap6GM6UZ0c4E6yb1y/hy2UB6hTrqhglp3XfmU9qbLCGRYhLVV5aRPpC4EmoG8N8zOnkYCgoBz+ScvGAARY6Q==", + "dev": true, + "dependencies": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gaxios/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/gaxios/node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gaxios/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gaxios/node_modules/node-fetch": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", + "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/gaxios/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "node_modules/gaxios/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "node_modules/gaxios/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/gcp-metadata": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz", + "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==", + "dev": true, + "dependencies": { + "gaxios": "^4.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "license": "ISC" + }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/git-last-commit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/git-last-commit/-/git-last-commit-1.0.1.tgz", + "integrity": "sha512-FDSgeMqa7GnJDxt/q0AbrxbfeTyxp4ImxEw1e4nw6NUHA5FMhFUq33dTXI4Xdgcj1VQ1q5QLWF6WxFrJ8KCBOg==" + }, + "node_modules/glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz", + "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/glob-slash/-/glob-slash-1.0.0.tgz", + "integrity": "sha1-/lLvpDMjP3Si/mTHq7m8hIICq5U=", + "license": "MIT" + }, + "node_modules/glob-slasher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glob-slasher/-/glob-slasher-1.0.1.tgz", + "integrity": "sha1-dHoOW7IiZC7hDT4FRD4QlJPLD44=", + "license": "MIT", + "dependencies": { + "glob-slash": "^1.0.0", + "lodash.isobject": "^2.4.1", + "toxic": "^1.0.0" + } + }, + "node_modules/globals": { + "version": "11.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.8.0.tgz", + "integrity": "sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/google-auth-library": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.10.1.tgz", + "integrity": "sha512-nQxgM1ZopUMcpMnu95kOSzI+9tJl4YDOZJomSTBGlRLpxfBopdwto7WvzoI87HuN0nQqVETgOsHi/C/po1rppA==", + "dev": true, + "dependencies": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^4.0.0", + "gcp-metadata": "^4.2.0", + "gtoken": "^5.0.4", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/google-auth-library/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/google-closure-compiler": { + "version": "20190909.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20190909.0.0.tgz", + "integrity": "sha512-Mh1IKgp72HBgEeWQ5RDZHGj0w3vhEJsIaWptqSWEr7muinBv/0Xq5g1pxCvXX7LPfSH7vL+1Indzt1OxwfTXwQ==", + "license": "Apache-2.0", + "dependencies": { + "chalk": "2.x", + "google-closure-compiler-java": "^20190909.0.0", + "google-closure-compiler-js": "^20190909.0.0", + "minimist": "1.x", + "vinyl": "2.x", + "vinyl-sourcemaps-apply": "^0.2.0" + }, + "bin": { + "google-closure-compiler": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "google-closure-compiler-linux": "^20190909.0.0", + "google-closure-compiler-osx": "^20190909.0.0", + "google-closure-compiler-windows": "^20190909.0.0" + } + }, + "node_modules/google-closure-compiler-java": { + "version": "20190909.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-java/-/google-closure-compiler-java-20190909.0.0.tgz", + "integrity": "sha512-Cz58+hW7XxFQ8KHenfP9eH2FqvGJ1ikcSebHihgqAg1Pfy8ZzxWUBZYEwOGqV0Kzcbb1NN79n0UMd2ZNfWb19w==", + "license": "Apache-2.0" + }, + "node_modules/google-closure-compiler-js": { + "version": "20190909.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-js/-/google-closure-compiler-js-20190909.0.0.tgz", + "integrity": "sha512-x8PcAL5H5VxkOJ/jYdAYxwdwbIvClGW7IxzyOH2NMvBNVP6AbpJ24SCODQSA0qhMbCs45JyY3TJ9s2wH2NuzUA==", + "license": "Apache-2.0" + }, + "node_modules/google-closure-compiler-osx": { + "version": "20190909.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-osx/-/google-closure-compiler-osx-20190909.0.0.tgz", + "integrity": "sha512-DvIr6gd7BfIpptSfLihEGwCHKlcwssHC+pt1duagRPfmgezp8GeJvAvbZIS/+Ud77zRFz+wcwQWsTvwyZSwklQ==", + "cpu": [ + "x64", + "x86" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/google-closure-library": { + "version": "v20190909.0.0", + "license": "Apache-2.0" + }, + "node_modules/google-gax": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-2.28.0.tgz", + "integrity": "sha512-kuqc8a4+CTCMBcF3tlOL7Sa74JWkTzcZxatAQTCVK35WToXkHnJ0qncFOJuegUv3EbV9IQY4j/+NZdFLv+lbTA==", + "dev": true, + "dependencies": { + "@grpc/grpc-js": "~1.4.0", + "@grpc/proto-loader": "^0.6.1", + "@types/long": "^4.0.0", + "abort-controller": "^3.0.0", + "duplexify": "^4.0.0", + "fast-text-encoding": "^1.0.3", + "google-auth-library": "^7.6.1", + "is-stream-ended": "^0.1.4", + "node-fetch": "^2.6.1", + "object-hash": "^2.1.1", + "proto3-json-serializer": "^0.1.1", + "protobufjs": "6.11.2", + "retry-request": "^4.0.0" + }, + "bin": { + "compileProtos": "build/tools/compileProtos.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/google-gax/node_modules/node-fetch": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", + "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/google-gax/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "node_modules/google-gax/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "node_modules/google-gax/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/google-p12-pem": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.2.tgz", + "integrity": "sha512-tjf3IQIt7tWCDsa0ofDQ1qqSCNzahXDxdAGJDbruWqu3eCg5CKLYKN+hi0s6lfvzYZ1GDVr+oDF9OOWlDSdf0A==", + "dev": true, + "dependencies": { + "node-forge": "^0.10.0" + }, + "bin": { + "gp12-pem": "build/src/bin/gp12-pem.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "license": "MIT", + "engines": { + "node": ">=4.x" + } + }, + "node_modules/gtoken": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.1.tgz", + "integrity": "sha512-yqOREjzLHcbzz1UrQoxhBtpk8KjrVhuqPE7od1K2uhyxG2BHjKZetlbLw/SPZak/QqTIQW+addS+EcjqQsZbwQ==", + "dev": true, + "dependencies": { + "gaxios": "^4.0.0", + "google-p12-pem": "^3.0.3", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", + "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "license": "ISC", + "dependencies": { + "ajv": "^5.3.0", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^1.0.1" + } + }, + "node_modules/html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "engines": [ + "node >= 0.4.0" + ], + "license": "MIT" + }, + "node_modules/html-minifier": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz", + "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==", + "license": "MIT", + "dependencies": { + "camel-case": "^3.0.0", + "clean-css": "^4.2.1", + "commander": "^2.19.0", + "he": "^1.2.0", + "param-case": "^2.1.1", + "relateurl": "^0.2.7", + "uglify-js": "^3.5.1" + }, + "bin": { + "html-minifier": "cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/html-modules-polyfill": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/html-modules-polyfill/-/html-modules-polyfill-0.1.0.tgz", + "integrity": "sha512-ha+rI4VbAciDHsPlUv60WfaeL/XEcnIoN6Tj/tr/iLPikjSQnw8zM7gXmKLdyCHptYK21iKieTNhIqK0JKzDHw==", + "license": "Apache-2.0", + "dependencies": { + "jsdom": "^15.1.1", + "rollup": "^1.19.4" + } + }, + "node_modules/html-modules-polyfill/node_modules/acorn": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", + "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/html-modules-polyfill/node_modules/acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "license": "MIT", + "dependencies": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "node_modules/html-modules-polyfill/node_modules/acorn-globals/node_modules/acorn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.2.tgz", + "integrity": "sha512-GXmKIvbrN3TV7aVqAzVFaMW8F8wzVX7voEBRO3bDA64+EX37YSayggRJP5Xig6HYHBkWKpFg9W5gg6orklubhg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/html-modules-polyfill/node_modules/cssom": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.1.tgz", + "integrity": "sha512-6Aajq0XmukE7HdXUU6IoSWuH1H6gH9z6qmagsstTiN7cW2FNTsb+J2Chs+ufPgZCsV/yo8oaEudQLrb9dGxSVQ==", + "license": "MIT" + }, + "node_modules/html-modules-polyfill/node_modules/cssstyle": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.0.0.tgz", + "integrity": "sha512-QXSAu2WBsSRXCPjvI43Y40m6fMevvyRm8JVAuF9ksQz5jha4pWP1wpaK7Yu5oLFc6+XAY+hj8YhefyXcBB53gg==", + "license": "MIT", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/html-modules-polyfill/node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "license": "MIT" + }, + "node_modules/html-modules-polyfill/node_modules/data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "node_modules/html-modules-polyfill/node_modules/data-urls/node_modules/whatwg-mimetype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.2.0.tgz", + "integrity": "sha512-5YSO1nMd5D1hY3WzAQV3PzZL83W3YeyR1yW9PcH26Weh1t+Vzh9B6XkDh7aXm83HBZ4nSMvkjvN2H2ySWIvBgw==", + "license": "MIT" + }, + "node_modules/html-modules-polyfill/node_modules/escodegen": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", + "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/html-modules-polyfill/node_modules/jsdom": { + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.0.tgz", + "integrity": "sha512-+hRyEfjRPFwTYMmSQ3/f7U9nP8ZNZmbkmUek760ZpxnCPWJIhaaLRuUSvpJ36fZKCGENxLwxClzwpOpnXNfChQ==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.0", + "acorn": "^7.1.0", + "acorn-globals": "^4.3.2", + "array-equal": "^1.0.0", + "cssom": "^0.4.1", + "cssstyle": "^2.0.0", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.1", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.4", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.7", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^7.0.0", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/html-modules-polyfill/node_modules/nwsapi": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", + "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==", + "license": "MIT" + }, + "node_modules/html-modules-polyfill/node_modules/request-promise-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "license": "ISC", + "dependencies": { + "lodash": "^4.17.11" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/html-modules-polyfill/node_modules/request-promise-native": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", + "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "license": "ISC", + "dependencies": { + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "engines": { + "node": ">=0.12.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/html-modules-polyfill/node_modules/request-promise-native/node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/html-modules-polyfill/node_modules/rollup": { + "version": "1.32.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", + "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==", + "dependencies": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + }, + "bin": { + "rollup": "dist/bin/rollup" + } + }, + "node_modules/html-modules-polyfill/node_modules/saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/html-modules-polyfill/node_modules/tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "license": "BSD-3-Clause", + "dependencies": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/html-modules-polyfill/node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "license": "MIT" + }, + "node_modules/html-modules-polyfill/node_modules/ws": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.1.2.tgz", + "integrity": "sha512-gftXq3XI81cJCgkUiAVixA0raD9IVmXqsylCrjRygw4+UOOGzPoxnQ6r/CnVL9i+mDncJo94tSkyrtuuQVBmrg==", + "license": "MIT", + "dependencies": { + "async-limiter": "^1.0.0" + } + }, + "node_modules/html-modules-polyfill/node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "license": "MIT" + }, + "node_modules/http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==" + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "license": "MIT", + "dependencies": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/idb": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz", + "integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==" + }, + "node_modules/iframe-load": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/iframe-load/-/iframe-load-0.1.4.tgz", + "integrity": "sha512-59rlJMKsHFSBh/oyJy82wsevdhTEsceKkcyZMee755bY+MfDj2oOX7Yql19L4fgzze1Kqi5E0/InR2UHR+BcPQ==", + "license": "Apache-2.0" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "license": "MIT", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=" + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream-ended": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==", + "dev": true + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "license": "MIT" + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "license": "ISC" + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "license": "MIT" + }, + "node_modules/jquery": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.0.tgz", + "integrity": "sha512-Xb7SVYMvygPxbFMpTFQiHh1J7HClEaThguL15N/Gg37Lri/qKyhRGZYzHRyLH8Stq3Aow0LsHO2O2ci86fCrNQ==", + "license": "MIT" + }, + "node_modules/js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "license": "MIT" + }, + "node_modules/jsdom": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-12.2.0.tgz", + "integrity": "sha512-QPOggIJ8fquWPLaYYMoh+zqUmdphDtu1ju0QGTitZT1Yd8I5qenPpXM1etzUegu3MjVp8XPzgZxdn8Yj7e40ig==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.0", + "acorn": "^6.0.2", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.0.1", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.0.9", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.3", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.4.3", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.0", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "dev": true, + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "node_modules/json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "license": "ISC" + }, + "node_modules/json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dev": true, + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dev": true, + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "license": "MIT", + "dependencies": { + "invert-kv": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lit-element": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-2.2.1.tgz", + "integrity": "sha512-ipDcgQ1EpW6Va2Z6dWm79jYdimVepO5GL0eYkZrFvdr0OD/1N260Q9DH+K5HXHFrRoC7dOg+ZpED2XE0TgGdXw==", + "license": "BSD-3-Clause", + "dependencies": { + "lit-html": "^1.0.0" + } + }, + "node_modules/lit-html": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-1.1.1.tgz", + "integrity": "sha512-1WqhkPpj+CKwLRXCCbyRGnWkcFKE4ft2+j8C2zaXwFUK9I2vYDzTuDGPh0H9hZcDBEwoe6YpPC8AO5734EPORQ==", + "license": "BSD-3-Clause" + }, + "node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "license": "MIT" + }, + "node_modules/lodash._objecttypes": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz", + "integrity": "sha1-fAt/admKH3ZSn4kLDNsbTf7BHBE=", + "license": "MIT" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "license": "MIT" + }, + "node_modules/lodash.isobject": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", + "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=", + "license": "MIT", + "dependencies": { + "lodash._objecttypes": "~2.4.1" + } + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "license": "MIT" + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "license": "Apache-2.0" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lottie-web": { + "version": "5.5.10", + "resolved": "https://registry.npmjs.org/lottie-web/-/lottie-web-5.5.10.tgz", + "integrity": "sha512-8U/WSNKx4y3JdGq1lZh8Phuz/pQsiM6BGQ/rNFjLPGJSaKQ92VTVN7NAOHUsvV0bywsC+ShBWSVUhbuP3NV2tg==", + "license": "MIT" + }, + "node_modules/lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/lru-cache/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + }, + "node_modules/magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/map-age-cleaner": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz", + "integrity": "sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ==", + "license": "MIT", + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/matchit": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/matchit/-/matchit-1.0.8.tgz", + "integrity": "sha512-CwPPICzozd/ezCzpVwGYG5bMVieaapnA0vvHDQnmQ2u2vZtVLynoPmvFsZjL67hFOvTBhhpqSR0bq3uloDP/Rw==", + "license": "MIT", + "dependencies": { + "@arr/every": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mem": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", + "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", + "license": "MIT", + "dependencies": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "license": "MIT", + "dependencies": { + "mime-db": "~1.37.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "license": "MIT" + }, + "node_modules/mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "license": "MIT", + "dependencies": { + "minimist": "0.0.8" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp/node_modules/minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "license": "MIT" + }, + "node_modules/mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "license": "MIT", + "dependencies": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/mocha-headless-server": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/mocha-headless-server/-/mocha-headless-server-0.1.2.tgz", + "integrity": "sha512-3zoWMlJC6TNmLLZUxTmVq8nZ05AqEViUQ0Bs6/O74NUTrOzcyPWNORfAhZWVkmo3UskbejFIwiYL/s4hyHtZ8w==", + "license": "Apache-2.0", + "dependencies": { + "puppeteer": "^1.6.0", + "serve-handler": "^3.3.0" + }, + "bin": { + "mocha-headless-server": "run.js" + }, + "peerDependencies": { + "mocha": "5.x" + } + }, + "node_modules/mocha/node_modules/commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "license": "MIT" + }, + "node_modules/mocha/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/mocha/node_modules/he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "license": "MIT" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "license": "MIT" + }, + "node_modules/no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "license": "MIT", + "dependencies": { + "lower-case": "^1.1.1" + } + }, + "node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/node-releases": { + "version": "1.1.32", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.32.tgz", + "integrity": "sha512-VhVknkitq8dqtWoluagsGPn3dxTvN9fwgR59fV3D7sLBHe0JfDramsMI8n8mY//ccq/Kkrf8ZRHRpsyVZ3qw1A==", + "license": "MIT", + "dependencies": { + "semver": "^5.3.0" + } + }, + "node_modules/nodent-compiler": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/nodent-compiler/-/nodent-compiler-3.2.11.tgz", + "integrity": "sha512-rfDrGWdgIJYomPUzR8nXiWNuIhJ7cVodPeZP3Ho65LEycuaX2uVNZ0ytpcfrmUKzdFeLRtye9+pHe8OynPZuPQ==", + "engines": "node >= 0.10.0", + "license": "BSD-2-Clause", + "dependencies": { + "acorn": ">= 2.5.2 <= 5.7.3", + "acorn-es7-plugin": "^1.1.7", + "nodent-transform": "^3.2.9", + "source-map": "^0.5.7" + } + }, + "node_modules/nodent-compiler/node_modules/acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/nodent-compiler/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nodent-runtime": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/nodent-runtime/-/nodent-runtime-3.2.1.tgz", + "integrity": "sha512-7Ws63oC+215smeKJQCxzrK21VFVlCFBkwl0MOObt0HOpVQXs3u483sAmtkF33nNqZ5rSOQjB76fgyPBmAUrtCA==", + "hasInstallScript": true, + "license": "MIT" + }, + "node_modules/nodent-transform": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/nodent-transform/-/nodent-transform-3.2.9.tgz", + "integrity": "sha512-4a5FH4WLi+daH/CGD5o/JWRR8W5tlCkd3nrDSkxbOzscJTyTUITltvOJeQjg3HJ1YgEuNyiPhQbvbtRjkQBByQ==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "license": "MIT", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "license": "MIT" + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nwsapi": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.9.tgz", + "integrity": "sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ==", + "license": "MIT" + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/object-hash": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "license": "MIT", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-locale": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", + "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", + "license": "MIT", + "dependencies": { + "execa": "^0.10.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/os-locale/node_modules/execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", + "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "license": "MIT", + "dependencies": { + "no-case": "^2.2.0" + } + }, + "node_modules/parse-ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.0.0.tgz", + "integrity": "sha512-AddiXFSLLCqj+tCRJ9MrUtHZB4DWojO3tk0NVZ+g5MaMQHF2+p2ktqxuoXyPFLljz/aUK0Nfhd/uGWnhXVXEyA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "license": "(WTFPL OR MIT)" + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", + "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==", + "license": "MIT" + }, + "node_modules/pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "license": "MIT" + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "license": "MIT" + }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "license": "MIT" + }, + "node_modules/polka": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/polka/-/polka-0.5.2.tgz", + "integrity": "sha512-FVg3vDmCqP80tOrs+OeNlgXYmFppTXdjD5E7I4ET1NjvtNmQrb1/mJibybKkb/d4NA7YWAr1ojxuhpL3FHqdlw==", + "license": "MIT", + "dependencies": { + "@polka/url": "^0.5.0", + "trouter": "^2.0.1" + } + }, + "node_modules/postcss": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.5.tgz", + "integrity": "sha512-HBNpviAUFCKvEh7NZhw1e8MBPivRszIiUnhrJ+sBFVSYSqubrzwX3KG51mYgcRHX8j/cAgZJedONZcm5jTBdgQ==", + "license": "MIT", + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "license": "MIT" + }, + "node_modules/postcss/node_modules/chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-4.0.0.tgz", + "integrity": "sha512-qG66ahoLCwpLXD09ZPHSCbUWYTqdosB7SMP4OffgTgL2PBKXMuUsrk5Bwg8q4qPkjTXsKBMr+YK3Ltd/6F9s/Q==", + "license": "MIT", + "dependencies": { + "parse-ms": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise-polyfill": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz", + "integrity": "sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==" + }, + "node_modules/proto3-json-serializer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-0.1.5.tgz", + "integrity": "sha512-G395jcZkgNXNeS+6FGqd09TsXeoCs9wmBWByDiwFy7Yd7HD8pyfyvf6q+rGh7PhT4AshRpG4NowzoKYUtkNjKg==", + "dev": true + }, + "node_modules/protobufjs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz", + "integrity": "sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + }, + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" + } + }, + "node_modules/protobufjs/node_modules/@types/node": { + "version": "16.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", + "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" + }, + "node_modules/psl": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz", + "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==", + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/puppeteer": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.20.0.tgz", + "integrity": "sha512-bt48RDBy2eIwZPrkgbcwHtb51mj2nKvHOPMaSH2IsWiv7lOG9k9zhaRzpDZafrk05ajMc3cu+lSQYYOfH2DkVQ==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "debug": "^4.1.0", + "extract-zip": "^1.6.6", + "https-proxy-agent": "^2.2.1", + "mime": "^2.0.3", + "progress": "^2.0.1", + "proxy-from-env": "^1.0.0", + "rimraf": "^2.6.1", + "ws": "^6.1.0" + }, + "engines": { + "node": ">=6.4.0" + } + }, + "node_modules/puppeteer/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/puppeteer/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.1.1.tgz", + "integrity": "sha512-XXdSXZrQuvqoETj50+JAitxz1UPdt5dupjT6T5nVB+WvjMv2XKYj+s7hPeAVCXvmJrL36O4YYyWlIC3an2ePiQ==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", + "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "license": "MIT" + }, + "node_modules/regenerator-transform": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", + "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", + "license": "MIT", + "dependencies": { + "private": "^0.1.6" + } + }, + "node_modules/regexp-tree": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.13.tgz", + "integrity": "sha512-hwdV/GQY5F8ReLZWO+W1SRoN5YfpOKY6852+tBFcma72DKBIcHjPRIlIvQN35bCOljuAfP2G2iB0FC/w236mUw==", + "license": "MIT", + "bin": { + "regexp-tree": "bin/regexp-tree" + } + }, + "node_modules/regexpu-core": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", + "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.1.0", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", + "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "license": "ISC" + }, + "node_modules/replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/request-promise-core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", + "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "license": "ISC", + "dependencies": { + "lodash": "^4.13.1" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request-promise-native": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", + "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", + "license": "ISC", + "dependencies": { + "request-promise-core": "1.1.1", + "stealthy-require": "^1.1.0", + "tough-cookie": ">=2.3.3" + }, + "engines": { + "node": ">=0.12.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "license": "ISC" + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/retry-request": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.2.2.tgz", + "integrity": "sha512-xA93uxUD/rogV7BV59agW/JHPGXeREMWiZc9jhcwY4YdZ7QOtC7qbomYg0n4wyk2lJhggjvKvhNX8wln/Aldhg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "extend": "^3.0.2" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sass": { + "version": "1.22.9", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.22.9.tgz", + "integrity": "sha512-FzU1X2V8DlnqabrL4u7OBwD2vcOzNMongEJEx3xMEhWY/v26FFR3aG0hyeu2T965sfR0E9ufJwmG+Qjz78vFPQ==", + "license": "MIT", + "dependencies": { + "chokidar": ">=2.0.0 <4.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/saxes": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.3.tgz", + "integrity": "sha512-Nc5DXc5A+m3rUDtkS+vHlBWKT7mCKjJPyia7f8YMW773hsXVv2wEHQZGE0zs4+5PLwz9U5Sbl/94Cnd9vHV7Bg==", + "license": "ISC", + "dependencies": { + "xmlchars": "^1.3.1" + } + }, + "node_modules/semver": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/serve-handler": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-3.6.2.tgz", + "integrity": "sha512-r+B03kGRis30NVsiIFdLJuU6VEkcJ8CSAHYKgoE8Hxsj6y6tFJ0QPSHMHFcu/Wf7v+PVm0RqEo/g8cQxfYL/AA==", + "license": "MIT", + "dependencies": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "fast-url-parser": "1.1.3", + "glob-slasher": "1.0.1", + "mime-types": "2.1.18", + "minimatch": "3.0.4", + "path-is-inside": "1.0.2", + "path-to-regexp": "2.2.1" + } + }, + "node_modules/serve-handler/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-handler/node_modules/mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-handler/node_modules/mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "license": "MIT", + "dependencies": { + "mime-db": "~1.33.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "license": "ISC" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", + "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "node_modules/sshpk": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.1.tgz", + "integrity": "sha512-mSdgNUaidk+dRU5MhYtN9zebdzF2iG0cNPWy8HG+W8y+fT1JnSkh0fzzpjOa0L7P8i1Rscz38t0h4gPcKz43xA==", + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "license": "ISC", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "dev": true, + "dependencies": { + "stubs": "^3.0.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "license": "MIT", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=", + "dev": true + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "license": "MIT" + }, + "node_modules/teeny-request": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.1.3.tgz", + "integrity": "sha512-Ew3aoFzgQEatLA5OBIjdr1DWJUaC1xardG+qbPPo5k/y/3fMwXLxpjh5UB5dVfElktLaQbbMs80chkz53ByvSg==", + "dev": true, + "dependencies": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.1", + "stream-events": "^1.0.5", + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/teeny-request/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/teeny-request/node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/teeny-request/node_modules/node-fetch": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", + "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/teeny-request/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "node_modules/teeny-request/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/teeny-request/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "node_modules/teeny-request/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/terser": { + "version": "3.10.11", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.10.11.tgz", + "integrity": "sha512-iruZ7j14oBbRYJC5cP0/vTU7YOWjN+J1ZskEGoF78tFzXdkK2hbCL/3TRZN8XB+MuvFhvOHMp7WkOCBO4VEL5g==", + "license": "BSD-2-Clause", + "dependencies": { + "commander": "~2.17.1", + "source-map": "~0.6.1", + "source-map-support": "~0.5.6" + }, + "bin": { + "terser": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "license": "MIT" + }, + "node_modules/time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tough-cookie/node_modules/psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", + "license": "MIT" + }, + "node_modules/tough-cookie/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "license": "MIT" + }, + "node_modules/toxic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toxic/-/toxic-1.0.1.tgz", + "integrity": "sha512-WI3rIGdcaKULYg7KVoB0zcjikqvcYYvcuT6D89bFPz2rVR0Rl0PK6x8/X62rtdLtBKIE985NzVf/auTtGegIIg==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.10" + } + }, + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/trouter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/trouter/-/trouter-2.0.1.tgz", + "integrity": "sha512-kr8SKKw94OI+xTGOkfsvwZQ8mWoikZDd2n8XZHjJVZUARZT+4/VV6cacRS6CLsH9bNm+HFIPU1Zx4CnNnb4qlQ==", + "license": "MIT", + "dependencies": { + "matchit": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "license": "Unlicense" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "license": "MIT" + }, + "node_modules/uglify-js": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", + "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", + "license": "BSD-2-Clause", + "dependencies": { + "commander": "~2.20.0", + "source-map": "~0.6.1" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", + "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", + "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unistore": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/unistore/-/unistore-3.4.1.tgz", + "integrity": "sha512-p2Ej8qqrqcD10Ah0ZUKUU/mhRB8pM4q6gzjxq9kZpgxa8dks7oHT8jDP4CqLhoRof3RXOZLKB9EBV1DTzHiJRw==", + "license": "MIT", + "peerDependenciesMeta": { + "preact": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "license": "MIT" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "license": "MIT" + }, + "node_modules/uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/extsprintf": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz", + "integrity": "sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/vinyl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "license": "MIT", + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", + "license": "ISC", + "dependencies": { + "source-map": "^0.5.1" + } + }, + "node_modules/vinyl-sourcemaps-apply/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "license": "MIT", + "dependencies": { + "browser-process-hrtime": "^0.1.2" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "license": "MIT", + "dependencies": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "node_modules/web-animations-js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/web-animations-js/-/web-animations-js-2.3.1.tgz", + "integrity": "sha1-Om2bwVGWN3qQ+OKAP6UmIWWwRRA=", + "license": "Apache-2.0" + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "license": "BSD-2-Clause" + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", + "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==", + "license": "MIT" + }, + "node_modules/whatwg-mimetype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.2.0.tgz", + "integrity": "sha512-5YSO1nMd5D1hY3WzAQV3PzZL83W3YeyR1yW9PcH26Weh1t+Vzh9B6XkDh7aXm83HBZ4nSMvkjvN2H2ySWIvBgw==", + "license": "MIT" + }, + "node_modules/whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "license": "ISC" + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "license": "MIT", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "license": "ISC" + }, + "node_modules/ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "license": "MIT", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "license": "Apache-2.0" + }, + "node_modules/xmlchars": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-1.3.1.tgz", + "integrity": "sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw==", + "license": "MIT" + }, + "node_modules/xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/xregexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", + "license": "MIT" + }, + "node_modules/y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "license": "ISC" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", + "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", + "license": "MIT", + "dependencies": { + "cliui": "^4.0.0", + "decamelize": "^2.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^10.1.0" + } + }, + "node_modules/yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "license": "ISC", + "dependencies": { + "camelcase": "^4.1.0" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "license": "MIT", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "license": "MIT", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + }, + "dependencies": { + "@arr/every": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@arr/every/-/every-1.0.0.tgz", + "integrity": "sha1-MU+BaPUK5IoDLP2tX9tDb0ZKl6w=" + }, + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/core": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.0.tgz", + "integrity": "sha512-FuRhDRtsd6IptKpHXAa+4WPZYY2ZzgowkbLBecEDDSje1X/apG7jQM33or3NdOmjXBKWGOg4JmSiRfUfuTtHXw==", + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.6.0", + "@babel/helpers": "^7.6.0", + "@babel/parser": "^7.6.0", + "@babel/template": "^7.6.0", + "@babel/traverse": "^7.6.0", + "@babel/types": "^7.6.0", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/template": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", + "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "requires": { + "@babel/highlight": "^7.0.0" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "@babel/generator": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.0.tgz", + "integrity": "sha512-Ms8Mo7YBdMMn1BYuNtKuP/z0TgEIhbcyB8HVR6PPNYp4P61lMsABiS4A3VG1qznjXVCf3r+fVHhm4efTYVsySA==", + "requires": { + "@babel/types": "^7.6.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", + "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "requires": { + "@babel/types": "^7.0.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", + "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", + "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.1.0", + "@babel/types": "^7.0.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", + "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-call-delegate": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz", + "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==", + "requires": { + "@babel/helper-hoist-variables": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" + } + }, + "@babel/helper-define-map": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz", + "integrity": "sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg==", + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/types": "^7.5.5", + "lodash": "^4.17.13" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", + "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "requires": { + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", + "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", + "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "requires": { + "@babel/types": "^7.0.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", + "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-hoist-variables": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", + "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", + "requires": { + "@babel/types": "^7.4.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz", + "integrity": "sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA==", + "requires": { + "@babel/types": "^7.5.5" + } + }, + "@babel/helper-module-imports": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", + "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "requires": { + "@babel/types": "^7.0.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", + "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-module-transforms": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz", + "integrity": "sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw==", + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/types": "^7.5.5", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/template": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", + "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.0" + } + } + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", + "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "requires": { + "@babel/types": "^7.0.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", + "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==" + }, + "@babel/helper-regex": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz", + "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==", + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", + "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-wrap-function": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", + "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-replace-supers": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz", + "integrity": "sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.5.5", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/traverse": "^7.5.5", + "@babel/types": "^7.5.5" + } + }, + "@babel/helper-simple-access": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", + "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "requires": { + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", + "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", + "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "requires": { + "@babel/types": "^7.4.4" + } + }, + "@babel/helper-wrap-function": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", + "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.2.0" + } + }, + "@babel/helpers": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.6.0.tgz", + "integrity": "sha512-W9kao7OBleOjfXtFGgArGRX6eCP0UEcA2ZWEWNkJdRZnHhW4eEbeswbG3EwaRsnQUAEGWYgMq1HsIXuNNNy2eQ==", + "requires": { + "@babel/template": "^7.6.0", + "@babel/traverse": "^7.6.0", + "@babel/types": "^7.6.0" + }, + "dependencies": { + "@babel/template": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", + "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.0" + } + } + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "@babel/parser": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.0.tgz", + "integrity": "sha512-+o2q111WEx4srBs7L9eJmcwi655eD8sXniLqMB93TBK9GrNzGrxDWSjiqz2hLU0Ha8MTXFIP0yd9fNdP+m43ZQ==" + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", + "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0", + "@babel/plugin-syntax-async-generators": "^7.2.0" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz", + "integrity": "sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", + "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-json-strings": "^7.2.0" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz", + "integrity": "sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz", + "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.5.4" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", + "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", + "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", + "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", + "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", + "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz", + "integrity": "sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg==", + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", + "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.0.tgz", + "integrity": "sha512-tIt4E23+kw6TgL/edACZwP1OUKrjOTyMrFMLoT5IOFrfMRabCgekjqFd5o6PaAMildBu46oFkekIdMuGkkPEpA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz", + "integrity": "sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-define-map": "^7.5.5", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.5.5", + "@babel/helper-split-export-declaration": "^7.4.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", + "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz", + "integrity": "sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz", + "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.5.4" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz", + "integrity": "sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", + "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", + "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", + "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", + "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", + "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz", + "integrity": "sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg==", + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.6.0.tgz", + "integrity": "sha512-Ma93Ix95PNSEngqomy5LSBMAQvYKVe3dy+JlVJSHEXZR5ASL9lQBedMiCyVtmTLraIDVRE3ZjTZvmXXD2Ozw3g==", + "requires": { + "@babel/helper-module-transforms": "^7.4.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz", + "integrity": "sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg==", + "requires": { + "@babel/helper-hoist-variables": "^7.4.4", + "@babel/helper-plugin-utils": "^7.0.0", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", + "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.0.tgz", + "integrity": "sha512-jem7uytlmrRl3iCAuQyw8BpB4c4LWvSpvIeXKpMb+7j84lkx4m4mYr5ErAcmN5KM7B6BqrAvRGjBIbbzqCczew==", + "requires": { + "regexp-tree": "^0.1.13" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz", + "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz", + "integrity": "sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.5.5" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", + "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", + "requires": { + "@babel/helper-call-delegate": "^7.4.4", + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", + "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz", + "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==", + "requires": { + "regenerator-transform": "^0.14.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", + "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", + "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", + "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", + "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", + "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", + "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz", + "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.5.4" + } + }, + "@babel/preset-env": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.6.0.tgz", + "integrity": "sha512-1efzxFv/TcPsNXlRhMzRnkBFMeIqBBgzwmZwlFDw5Ubj0AGLeufxugirwZmkkX/ayi3owsSqoQ4fw8LkfK9SYg==", + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-dynamic-import": "^7.5.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.5.5", + "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-syntax-json-strings": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-transform-arrow-functions": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.5.0", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.6.0", + "@babel/plugin-transform-classes": "^7.5.5", + "@babel/plugin-transform-computed-properties": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.6.0", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/plugin-transform-duplicate-keys": "^7.5.0", + "@babel/plugin-transform-exponentiation-operator": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.4.4", + "@babel/plugin-transform-function-name": "^7.4.4", + "@babel/plugin-transform-literals": "^7.2.0", + "@babel/plugin-transform-member-expression-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.5.0", + "@babel/plugin-transform-modules-commonjs": "^7.6.0", + "@babel/plugin-transform-modules-systemjs": "^7.5.0", + "@babel/plugin-transform-modules-umd": "^7.2.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.6.0", + "@babel/plugin-transform-new-target": "^7.4.4", + "@babel/plugin-transform-object-super": "^7.5.5", + "@babel/plugin-transform-parameters": "^7.4.4", + "@babel/plugin-transform-property-literals": "^7.2.0", + "@babel/plugin-transform-regenerator": "^7.4.5", + "@babel/plugin-transform-reserved-words": "^7.2.0", + "@babel/plugin-transform-shorthand-properties": "^7.2.0", + "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-sticky-regex": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.4.4", + "@babel/plugin-transform-typeof-symbol": "^7.2.0", + "@babel/plugin-transform-unicode-regex": "^7.4.4", + "@babel/types": "^7.6.0", + "browserslist": "^4.6.0", + "core-js-compat": "^3.1.1", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + } + } + }, + "@babel/template": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.1.2.tgz", + "integrity": "sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.1.2", + "@babel/types": "^7.1.2" + }, + "dependencies": { + "@babel/parser": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.2.tgz", + "integrity": "sha512-x5HFsW+E/nQalGMw7hu+fvPqnBeBaIr0lWJ2SG0PPL2j+Pm9lYvCrsZJGIgauPIENx0v10INIyFjmSNUD/gSqQ==" + }, + "@babel/types": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", + "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/traverse": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.0.tgz", + "integrity": "sha512-93t52SaOBgml/xY74lsmt7xOR4ufYvhb5c5qiM6lu4J/dWGMAfAh6eKw4PjLes6DI6nQgearoxnFJk60YchpvQ==", + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.6.0", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "requires": { + "@babel/highlight": "^7.0.0" + } + } + } + }, + "@babel/types": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz", + "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@firebase/analytics": { + "version": "0.6.18", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.6.18.tgz", + "integrity": "sha512-FXNtYDxbs9ynPbzUVuG94BjFPOPpgJ7156660uvCBuKgoBCIVcNqKkJQQ7TH8384fqvGjbjdcgARY9jgAHbtog==", + "requires": { + "@firebase/analytics-types": "0.6.0", + "@firebase/component": "0.5.6", + "@firebase/installations": "0.4.32", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.3.0", + "tslib": "^2.1.0" + } + }, + "@firebase/analytics-types": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.6.0.tgz", + "integrity": "sha512-kbMawY0WRPyL/lbknBkme4CNLl+Gw+E9G4OpNeXAauqoQiNkBgpIvZYy7BRT4sNGhZbxdxXxXbruqUwDzLmvTw==" + }, + "@firebase/app": { + "version": "0.6.30", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.6.30.tgz", + "integrity": "sha512-uAYEDXyK0mmpZ8hWQj5TNd7WVvfsU8PgsqKpGljbFBG/HhsH8KbcykWAAA+c1PqL7dt/dbt0Reh1y9zEdYzMhg==", + "requires": { + "@firebase/app-types": "0.6.3", + "@firebase/component": "0.5.6", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.3.0", + "dom-storage": "2.1.0", + "tslib": "^2.1.0", + "xmlhttprequest": "1.8.0" + } + }, + "@firebase/app-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.3.2.tgz", + "integrity": "sha512-YjpsnV1xVTO1B836IKijRcDeceLgHQNJ/DWa+Vky9UHkm1Mi4qosddX8LZzldaWRTWKX7BN1MbZOLY8r7M/MZQ==", + "requires": { + "@firebase/app-check-interop-types": "0.1.0", + "@firebase/app-check-types": "0.3.1", + "@firebase/component": "0.5.6", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.3.0", + "tslib": "^2.1.0" + } + }, + "@firebase/app-check-interop-types": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.1.0.tgz", + "integrity": "sha512-uZfn9s4uuRsaX5Lwx+gFP3B6YsyOKUE+Rqa6z9ojT4VSRAsZFko9FRn6OxQUA1z5t5d08fY4pf+/+Dkd5wbdbA==" + }, + "@firebase/app-check-types": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.3.1.tgz", + "integrity": "sha512-KJ+BqJbdNsx4QT/JIT1yDj5p6D+QN97iJs3GuHnORrqL+DU3RWc9nSYQsrY6Tv9jVWcOkMENXAgDT484vzsm2w==" + }, + "@firebase/app-types": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.3.tgz", + "integrity": "sha512-/M13DPPati7FQHEQ9Minjk1HGLm/4K4gs9bR4rzLCWJg64yGtVC0zNg9gDpkw9yc2cvol/mNFxqTtd4geGrwdw==" + }, + "@firebase/auth": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.16.8.tgz", + "integrity": "sha512-mR0UXG4LirWIfOiCWxVmvz1o23BuKGxeItQ2cCUgXLTjNtWJXdcky/356iTUsd7ZV5A78s2NHeN5tIDDG6H4rg==", + "requires": { + "@firebase/auth-types": "0.10.3" + } + }, + "@firebase/auth-interop-types": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.6.tgz", + "integrity": "sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g==", + "requires": {} + }, + "@firebase/auth-types": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.10.3.tgz", + "integrity": "sha512-zExrThRqyqGUbXOFrH/sowuh2rRtfKHp9SBVY2vOqKWdCX1Ztn682n9WLtlUDsiYVIbBcwautYWk2HyCGFv0OA==", + "requires": {} + }, + "@firebase/component": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.6.tgz", + "integrity": "sha512-GyQJ+2lrhsDqeGgd1VdS7W+Y6gNYyI0B51ovNTxeZVG/W8I7t9MwEiCWsCvfm5wQgfsKp9dkzOcJrL5k8oVO/Q==", + "requires": { + "@firebase/util": "1.3.0", + "tslib": "^2.1.0" + } + }, + "@firebase/database": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.11.0.tgz", + "integrity": "sha512-b/kwvCubr6G9coPlo48PbieBDln7ViFBHOGeVt/bt82yuv5jYZBEYAac/mtOVSxpf14aMo/tAN+Edl6SWqXApw==", + "requires": { + "@firebase/auth-interop-types": "0.1.6", + "@firebase/component": "0.5.6", + "@firebase/database-types": "0.8.0", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.3.0", + "faye-websocket": "0.11.3", + "tslib": "^2.1.0" + } + }, + "@firebase/database-types": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.8.0.tgz", + "integrity": "sha512-7IdjAFRfPWyG3b4wcXyghb3Y1CLCSJFZIg1xl5GbTVMttSQFT4B5NYdhsfA34JwAsv5pMzPpjOaS3/K9XJ2KiA==", + "requires": { + "@firebase/app-types": "0.6.3", + "@firebase/util": "1.3.0" + } + }, + "@firebase/firestore": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-2.4.0.tgz", + "integrity": "sha512-PQ6+lWNrvh74GvFTHT4gCutFipDmtu8D1tNNawKe+/SyL6XFgeuMYgZIpKQgkTSezVDogC7EGQTJBFnewF9pOg==", + "requires": { + "@firebase/component": "0.5.6", + "@firebase/firestore-types": "2.4.0", + "@firebase/logger": "0.2.6", + "@firebase/util": "1.3.0", + "@firebase/webchannel-wrapper": "0.5.1", + "@grpc/grpc-js": "^1.3.2", + "@grpc/proto-loader": "^0.6.0", + "node-fetch": "2.6.1", + "tslib": "^2.1.0" + } + }, + "@firebase/firestore-types": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-2.4.0.tgz", + "integrity": "sha512-0dgwfuNP7EN6/OlK2HSNSQiQNGLGaRBH0gvgr1ngtKKJuJFuq0Z48RBMeJX9CGjV4TP9h2KaB+KrUKJ5kh1hMg==", + "requires": {} + }, + "@firebase/functions": { + "version": "0.6.15", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.6.15.tgz", + "integrity": "sha512-b7RpLwFXi0N+HgkfK8cmkarSOoBeSrc1jNdadkCacQt+vIePkKM3E9EJXF4roWSa8GwTruodpBsvH+lK9iCAKQ==", + "requires": { + "@firebase/component": "0.5.6", + "@firebase/functions-types": "0.4.0", + "@firebase/messaging-types": "0.5.0", + "node-fetch": "2.6.1", + "tslib": "^2.1.0" + } + }, + "@firebase/functions-types": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.4.0.tgz", + "integrity": "sha512-3KElyO3887HNxtxNF1ytGFrNmqD+hheqjwmT3sI09FaDCuaxGbOnsXAXH2eQ049XRXw9YQpHMgYws/aUNgXVyQ==" + }, + "@firebase/installations": { + "version": "0.4.32", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.4.32.tgz", + "integrity": "sha512-K4UlED1Vrhd2rFQQJih+OgEj8OTtrtH4+Izkx7ip2bhXSc+unk8ZhnF69D0kmh7zjXAqEDJrmHs9O5fI3rV6Tw==", + "requires": { + "@firebase/component": "0.5.6", + "@firebase/installations-types": "0.3.4", + "@firebase/util": "1.3.0", + "idb": "3.0.2", + "tslib": "^2.1.0" + } + }, + "@firebase/installations-types": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.3.4.tgz", + "integrity": "sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q==", + "requires": {} + }, + "@firebase/logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.2.6.tgz", + "integrity": "sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw==" + }, + "@firebase/messaging": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.8.0.tgz", + "integrity": "sha512-hkFHDyVe1kMcY9KEG+prjCbvS6MtLUgVFUbbQqq7JQfiv58E07YCzRUcMrJolbNi/1QHH6Jv16DxNWjJB9+/qA==", + "requires": { + "@firebase/component": "0.5.6", + "@firebase/installations": "0.4.32", + "@firebase/messaging-types": "0.5.0", + "@firebase/util": "1.3.0", + "idb": "3.0.2", + "tslib": "^2.1.0" + } + }, + "@firebase/messaging-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.5.0.tgz", + "integrity": "sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg==", + "requires": {} + }, + "@firebase/performance": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.4.18.tgz", + "integrity": "sha512-lvZW/TVDne2TyOpWbv++zjRn277HZpbjxbIPfwtnmKjVY1gJ+H77Qi1c2avVIc9hg80uGX/5tNf4pOApNDJLVg==", + "requires": { + "@firebase/component": "0.5.6", + "@firebase/installations": "0.4.32", + "@firebase/logger": "0.2.6", + "@firebase/performance-types": "0.0.13", + "@firebase/util": "1.3.0", + "tslib": "^2.1.0" + } + }, + "@firebase/performance-types": { + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.0.13.tgz", + "integrity": "sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA==" + }, + "@firebase/polyfill": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.36.tgz", + "integrity": "sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg==", + "requires": { + "core-js": "3.6.5", + "promise-polyfill": "8.1.3", + "whatwg-fetch": "2.0.4" + }, + "dependencies": { + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + } + } + }, + "@firebase/remote-config": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.1.43.tgz", + "integrity": "sha512-laNM4MN0CfeSp7XCVNjYOC4DdV6mj0l2rzUh42x4v2wLTweCoJ/kc1i4oWMX9TI7Jw8Am5Wl71Awn1J2pVe5xA==", + "requires": { + "@firebase/component": "0.5.6", + "@firebase/installations": "0.4.32", + "@firebase/logger": "0.2.6", + "@firebase/remote-config-types": "0.1.9", + "@firebase/util": "1.3.0", + "tslib": "^2.1.0" + } + }, + "@firebase/remote-config-types": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz", + "integrity": "sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA==" + }, + "@firebase/storage": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.7.0.tgz", + "integrity": "sha512-ebDFKJbM5HOxVtZV+RhVEBVtlWHK+Z5L3kA5uDBA2jMYcn+8NV/crozJnEE+iRsGEco6dLK5JS+Er4qtKLpH5A==", + "requires": { + "@firebase/component": "0.5.6", + "@firebase/storage-types": "0.5.0", + "@firebase/util": "1.3.0", + "node-fetch": "2.6.1", + "tslib": "^2.1.0" + } + }, + "@firebase/storage-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.5.0.tgz", + "integrity": "sha512-6Wv3Lu7s18hsgW7HG4BFwycTquZ3m/C8bjBoOsmPu0TD6M1GKwCzOC7qBdN7L6tRYPh8ipTj5+rPFrmhGfUVKA==", + "requires": {} + }, + "@firebase/util": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.3.0.tgz", + "integrity": "sha512-SESvmYwuKOVCZ1ZxLbberbx+9cnbxpCa4CG2FUSQYqN6Ab8KyltegMDIsqMw5KyIBZ4n1phfHoOa22xo5NzAlQ==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@firebase/webchannel-wrapper": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.5.1.tgz", + "integrity": "sha512-dZMzN0uAjwJXWYYAcnxIwXqRTZw3o14hGe7O6uhwjD1ZQWPVYA5lASgnNskEBra0knVBsOXB4KXg+HnlKewN/A==" + }, + "@google-cloud/cloudbuild": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@google-cloud/cloudbuild/-/cloudbuild-2.6.0.tgz", + "integrity": "sha512-+MKgIJ6MEomk5KF14PYUXQzkW3BDY+eMzsoxExkwnAQEFdrgrfnDTuLEpBWdP37ywAmTi8DSrtCy4pNtwZBiqA==", + "dev": true, + "requires": { + "google-gax": "^2.24.1" + } + }, + "@google-cloud/common": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-3.8.0.tgz", + "integrity": "sha512-E//DWaZ0NyQWosP1NV5lhOoSR83dNCgAb9xKxL3qp75WhePDkiC3da4BR6v/JDBjOFqh+rrmBhQ8oqZi0yDmuA==", + "dev": true, + "requires": { + "@google-cloud/projectify": "^2.0.0", + "@google-cloud/promisify": "^2.0.0", + "arrify": "^2.0.1", + "duplexify": "^4.1.1", + "ent": "^2.2.0", + "extend": "^3.0.2", + "google-auth-library": "^7.9.2", + "retry-request": "^4.2.2", + "teeny-request": "^7.0.0" + } + }, + "@google-cloud/error-reporting": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@google-cloud/error-reporting/-/error-reporting-2.0.4.tgz", + "integrity": "sha512-suC84m1eEeXc+oQza3mQiLXDkCuh+K/7z7Ulm39NBHvBO2zC4wZVEjk0de+CA2EEoZtbh/SufVc8mXdJfTu5iQ==", + "dev": true, + "requires": { + "@google-cloud/common": "^3.0.0", + "console-log-level": "^1.4.1" + } + }, + "@google-cloud/projectify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.1.1.tgz", + "integrity": "sha512-+rssMZHnlh0twl122gXY4/aCrk0G1acBqkHFfYddtsqpYXGxA29nj9V5V9SfC+GyOG00l650f6lG9KL+EpFEWQ==", + "dev": true + }, + "@google-cloud/promisify": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.4.tgz", + "integrity": "sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA==", + "dev": true + }, + "@grpc/grpc-js": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.4.2.tgz", + "integrity": "sha512-aUN6oGk9un8rfYWz73nQgFxPCYJQYd8LpIGguZHBsNduBMyqG6EWANrsVBuTG+nl/l4dKb3x+qi1l9+oxDxqGg==", + "requires": { + "@grpc/proto-loader": "^0.6.4", + "@types/node": ">=12.12.47" + }, + "dependencies": { + "@types/node": { + "version": "16.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", + "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==" + } + } + }, + "@grpc/proto-loader": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.6.tgz", + "integrity": "sha512-cdMaPZ8AiFz6ua6PUbP+LKbhwJbFXnrQ/mlnKGUyzDUZ3wp7vPLksnmLCBX6SHgSmjX7CbNVNLFYD5GmmjO4GQ==", + "requires": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^6.10.0", + "yargs": "^16.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + } + } + }, + "@polka/url": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-0.5.0.tgz", + "integrity": "sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==" + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + }, + "@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "dependencies": { + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "@rollup/plugin-node-resolve": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" + } + } + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" + }, + "@types/long": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" + }, + "@types/node": { + "version": "12.6.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.9.tgz", + "integrity": "sha512-+YB9FtyxXGyD54p8rXwWaN1EWEyar5L58GlGWgtH2I9rGmLGBQcw63+0jw+ujqVavNuO47S1ByAjm9zdHMnskw==" + }, + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "requires": { + "@types/node": "*" + } + }, + "@webcomponents/webcomponentsjs": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@webcomponents/webcomponentsjs/-/webcomponentsjs-2.4.0.tgz", + "integrity": "sha512-kEClEz2nu9/i6SvyBJTV4pCc6CyCzMhK7zEeJ6QhiJoulBp4YZ06Zfj2E2HUXfWfHJIjtKriJYMtfhettKEjEg==" + }, + "abab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==" + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "acorn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.2.tgz", + "integrity": "sha512-GXmKIvbrN3TV7aVqAzVFaMW8F8wzVX7voEBRO3bDA64+EX37YSayggRJP5Xig6HYHBkWKpFg9W5gg6orklubhg==" + }, + "acorn-es7-plugin": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz", + "integrity": "sha1-8u4fMiipDurRJF+asZIusucdM2s=" + }, + "acorn-globals": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz", + "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==", + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "acorn-walk": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.0.tgz", + "integrity": "sha512-ugTb7Lq7u4GfWSqqpwE0bGyoBZNMTok/zDBXxfEG0QM50jNlGhIWjRC1pPN7bvV1anhF+bs+/gNcRw+o55Evbg==" + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" + }, + "anymatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.0.3.tgz", + "integrity": "sha512-c6IvoeBECQlMVuYUjSwimnhmztImpErfxJzWZhIQinIvQWoGOnB0dLIgifbPHQt5heS6mNlaZG16f06H3C8t1g==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz", + "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==" + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "autoprefixer": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.3.0.tgz", + "integrity": "sha512-rpp+REfk0Ii3lCoiXhU4+CGYn8FbYckmvj6JJbJGSdzaxYCGJ7EvpHncDqgfAn/P6XhWig4u9BBNnsFAfAd5wg==", + "requires": { + "browserslist": "^4.3.2", + "caniuse-lite": "^1.0.30000898", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.5", + "postcss-value-parser": "^3.3.1" + }, + "dependencies": { + "browserslist": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.3.2.tgz", + "integrity": "sha512-wgZJWlYcDvsjRtf8socmAHf1nXq88KrQLB/gMYHGPUc2bzPWsgltSXwPWYHx4Sw0G9E/XGNW5wJDaWlpHRMpjA==", + "requires": { + "caniuse-lite": "^1.0.30000898", + "electron-to-chromium": "^1.3.80", + "node-releases": "^1.0.0-alpha.14" + } + }, + "electron-to-chromium": { + "version": "1.3.81", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.81.tgz", + "integrity": "sha512-+rym2xtzwPWmoi8AYRrCdW65QOT0vfUHjZb5mjgh0VLyj31pGM3CpP3znKhQNBzQaWujR/KEl/mfC2lnKYgADA==" + }, + "node-releases": { + "version": "1.0.0-alpha.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.0.0-alpha.14.tgz", + "integrity": "sha512-G8nnF9cP9QPP/jUmYWw/uUUhumHmkm+X/EarCugYFjYm2uXRMFeOD6CVT3RLdoyCvDUNy51nirGfUItKWs/S1g==", + "requires": { + "semver": "^5.3.0" + } + } + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-func-wrap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-func-wrap/-/babel-plugin-func-wrap-1.1.0.tgz", + "integrity": "sha512-C6e8mUVg3c/o9LwGk3tYvRq8MlyZdqimtQHzcZdsb2nEywlOkmp3zlCllo8QAmcsnwSB30iEcZ6rr2AhhTwO3w==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bignumber.js": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", + "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", + "dev": true + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" + }, + "browserslist": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.0.tgz", + "integrity": "sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA==", + "requires": { + "caniuse-lite": "^1.0.30000989", + "electron-to-chromium": "^1.3.247", + "node-releases": "^1.1.29" + }, + "dependencies": { + "caniuse-lite": { + "version": "1.0.30000989", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz", + "integrity": "sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw==" + } + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==" + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "caniuse-lite": { + "version": "1.0.30000898", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000898.tgz", + "integrity": "sha512-ytlTZqO4hYe4rNAJhMynUAIUI33jsP2Bb1two/9OVC39wZjPZ8exIO0eCLw5mqAtegOGiGF0kkTWTn3B02L+mw==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=" + }, + "chokidar": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.0.2.tgz", + "integrity": "sha512-c4PR2egjNjI1um6bamCQ6bUNPDiyofNQruHvKgHQ4gDUP/ITSVSzNsiI5OWtHOsX323i5ha/kk4YmOZ1Ktg7KA==", + "requires": { + "anymatch": "^3.0.1", + "braces": "^3.0.2", + "fsevents": "^2.0.6", + "glob-parent": "^5.0.0", + "is-binary-path": "^2.1.0", + "is-glob": "^4.0.1", + "normalize-path": "^3.0.0", + "readdirp": "^3.1.1" + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "requires": { + "source-map": "~0.6.0" + } + }, + "clipboardy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.1.0.tgz", + "integrity": "sha512-2pzOUxWcLlXWtn+Jd6js3o12TysNOOVes/aQfg+MT/35vrxWzedHlLwyoJpXjsFKWm95BTNEcMGD9+a7mKzZkQ==", + "requires": { + "arch": "^2.1.1", + "execa": "^1.0.0" + } + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=" + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" + }, + "cloneable-readable": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", + "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + }, + "combined-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "console-log-level": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/console-log-level/-/console-log-level-1.4.1.tgz", + "integrity": "sha512-VZzbIORbP+PPcN/gg3DXClTLPLg5Slwd5fL2MIc+o1qZ4BXBvWyc6QxPk6T/Mkr6IVjRpoAGf32XxP3ZWMVRcQ==", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" + }, + "core-js-compat": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.2.1.tgz", + "integrity": "sha512-MwPZle5CF9dEaMYdDeWm73ao/IflDH+FjeJCWEADcEgFSE9TLimFKwJsfmkwzI8eC0Aj0mgvMDjeQjrElkz4/A==", + "requires": { + "browserslist": "^4.6.6", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + } + } + }, + "cssom": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz", + "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==" + }, + "cssstyle": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.1.1.tgz", + "integrity": "sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==", + "requires": { + "cssom": "0.3.x" + } + }, + "custom-event-polyfill": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/custom-event-polyfill/-/custom-event-polyfill-1.0.7.tgz", + "integrity": "sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w==" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "dat.gui": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/dat.gui/-/dat.gui-0.7.3.tgz", + "integrity": "sha512-VfVWUcuTwae6/MTia/s2aPB1NLZXA2Gz6PiVyYOrVfODbXJLNAkVjn0aiuxx08cR68ucOuwrNXXt0m9MNVJvkQ==" + }, + "data-urls": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.0.1.tgz", + "integrity": "sha512-0HdcMZzK6ubMUnsMmQmG0AcLQPvbvb47R0+7CCZQCYgcd8OUWG91CG7sM6GoXgjz+WLl4ArFzHtBMy/QqSF4eg==", + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^7.0.0" + } + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "requires": { + "xregexp": "4.0.0" + } + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "dhost": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/dhost/-/dhost-0.1.9.tgz", + "integrity": "sha512-/MYMqdeIst8n5h6/nUwGu1WqwU5zwQAIP9W9X2u2NjKqPIx0fBFdoCm+4BeQ5hSt8zdJMX2JJUqnHyM/+hXrHQ==", + "requires": { + "bytes": "^3.1.0", + "chalk": "^2.4.2", + "clipboardy": "^1.2.3", + "he": "^1.2.0", + "mime": "^2.4.0", + "mri": "^1.1.4" + }, + "dependencies": { + "clipboardy": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz", + "integrity": "sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==", + "requires": { + "arch": "^2.1.0", + "execa": "^0.8.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + } + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + }, + "dom-storage": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz", + "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==" + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "duplexify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "dev": true, + "requires": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "electron-to-chromium": { + "version": "1.3.264", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.264.tgz", + "integrity": "sha512-z8E7WkrrquCuGYv+kKyybuZIbdms+4PeHp7Zm2uIgEhAigP0bOwqXILItwj0YO73o+QyHY/7XtEfP5DsHOWQgQ==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "^1.4.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escodegen": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", + "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esm-resolve": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/esm-resolve/-/esm-resolve-1.0.6.tgz", + "integrity": "sha512-EfPWOVgTsfaIlN4VdliGmgcaAT8b5OHF79HHdI8/2yJKRcNnLsISlmbzG9XtfvguZnKuXEmS53gJJktkaBKxfA==" + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "event-target": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/event-target/-/event-target-1.2.3.tgz", + "integrity": "sha512-ImybBIuODDMQKeSDX3wS0+cCpcb/bmE3Ve+IvKqQTTuCc5RBS+ERM7J2eTJTX8v2hJfnGO9x5bJT9GS6t9tV4A==" + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "requires": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fancy-log": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", + "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "time-stamp": "^1.0.0" + } + }, + "fast-async": { + "version": "6.3.8", + "resolved": "https://registry.npmjs.org/fast-async/-/fast-async-6.3.8.tgz", + "integrity": "sha512-TjlooyqrYm/gOXjD2UHNwfrWkvTbzU105Nk4bvcRTeRoL+wIeK6rqbqDg3CN9z5p37cE2iXhP6SxQFz8OVIaUg==", + "requires": { + "nodent-compiler": "^3.2.10", + "nodent-runtime": ">=3.2.1" + } + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "fast-text-encoding": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz", + "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==", + "dev": true + }, + "fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", + "requires": { + "punycode": "^1.3.2" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "firebase": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-8.10.0.tgz", + "integrity": "sha512-GCABTbJdo88QgzX5OH/vsfKBWvTRbLUylGlYXtO7uYo1VErfGd2BWW9ATlJP5Gxx+ClDfyvVTvcs2rcNWn3uUA==", + "requires": { + "@firebase/analytics": "0.6.18", + "@firebase/app": "0.6.30", + "@firebase/app-check": "0.3.2", + "@firebase/app-types": "0.6.3", + "@firebase/auth": "0.16.8", + "@firebase/database": "0.11.0", + "@firebase/firestore": "2.4.0", + "@firebase/functions": "0.6.15", + "@firebase/installations": "0.4.32", + "@firebase/messaging": "0.8.0", + "@firebase/performance": "0.4.18", + "@firebase/polyfill": "0.3.36", + "@firebase/remote-config": "0.1.43", + "@firebase/storage": "0.7.0", + "@firebase/util": "1.3.0" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "gaxios": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.2.tgz", + "integrity": "sha512-T+ap6GM6UZ0c4E6yb1y/hy2UB6hTrqhglp3XfmU9qbLCGRYhLVV5aRPpC4EmoG8N8zOnkYCgoBz+ScvGAARY6Q==", + "dev": true, + "requires": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.1" + }, + "dependencies": { + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "node-fetch": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", + "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, + "gcp-metadata": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz", + "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==", + "dev": true, + "requires": { + "gaxios": "^4.0.0", + "json-bigint": "^1.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=" + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "git-last-commit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/git-last-commit/-/git-last-commit-1.0.1.tgz", + "integrity": "sha512-FDSgeMqa7GnJDxt/q0AbrxbfeTyxp4ImxEw1e4nw6NUHA5FMhFUq33dTXI4Xdgcj1VQ1q5QLWF6WxFrJ8KCBOg==" + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz", + "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/glob-slash/-/glob-slash-1.0.0.tgz", + "integrity": "sha1-/lLvpDMjP3Si/mTHq7m8hIICq5U=" + }, + "glob-slasher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glob-slasher/-/glob-slasher-1.0.1.tgz", + "integrity": "sha1-dHoOW7IiZC7hDT4FRD4QlJPLD44=", + "requires": { + "glob-slash": "^1.0.0", + "lodash.isobject": "^2.4.1", + "toxic": "^1.0.0" + } + }, + "globals": { + "version": "11.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.8.0.tgz", + "integrity": "sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==" + }, + "google-auth-library": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.10.1.tgz", + "integrity": "sha512-nQxgM1ZopUMcpMnu95kOSzI+9tJl4YDOZJomSTBGlRLpxfBopdwto7WvzoI87HuN0nQqVETgOsHi/C/po1rppA==", + "dev": true, + "requires": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^4.0.0", + "gcp-metadata": "^4.2.0", + "gtoken": "^5.0.4", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "google-closure-compiler": { + "version": "20190909.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20190909.0.0.tgz", + "integrity": "sha512-Mh1IKgp72HBgEeWQ5RDZHGj0w3vhEJsIaWptqSWEr7muinBv/0Xq5g1pxCvXX7LPfSH7vL+1Indzt1OxwfTXwQ==", + "requires": { + "chalk": "2.x", + "google-closure-compiler-java": "^20190909.0.0", + "google-closure-compiler-js": "^20190909.0.0", + "google-closure-compiler-linux": "^20190909.0.0", + "google-closure-compiler-osx": "^20190909.0.0", + "google-closure-compiler-windows": "^20190909.0.0", + "minimist": "1.x", + "vinyl": "2.x", + "vinyl-sourcemaps-apply": "^0.2.0" + } + }, + "google-closure-compiler-java": { + "version": "20190909.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-java/-/google-closure-compiler-java-20190909.0.0.tgz", + "integrity": "sha512-Cz58+hW7XxFQ8KHenfP9eH2FqvGJ1ikcSebHihgqAg1Pfy8ZzxWUBZYEwOGqV0Kzcbb1NN79n0UMd2ZNfWb19w==" + }, + "google-closure-compiler-js": { + "version": "20190909.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-js/-/google-closure-compiler-js-20190909.0.0.tgz", + "integrity": "sha512-x8PcAL5H5VxkOJ/jYdAYxwdwbIvClGW7IxzyOH2NMvBNVP6AbpJ24SCODQSA0qhMbCs45JyY3TJ9s2wH2NuzUA==" + }, + "google-closure-compiler-osx": { + "version": "20190909.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-osx/-/google-closure-compiler-osx-20190909.0.0.tgz", + "integrity": "sha512-DvIr6gd7BfIpptSfLihEGwCHKlcwssHC+pt1duagRPfmgezp8GeJvAvbZIS/+Ud77zRFz+wcwQWsTvwyZSwklQ==", + "optional": true + }, + "google-closure-library": { + "version": "v20190909.0.0" + }, + "google-gax": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-2.28.0.tgz", + "integrity": "sha512-kuqc8a4+CTCMBcF3tlOL7Sa74JWkTzcZxatAQTCVK35WToXkHnJ0qncFOJuegUv3EbV9IQY4j/+NZdFLv+lbTA==", + "dev": true, + "requires": { + "@grpc/grpc-js": "~1.4.0", + "@grpc/proto-loader": "^0.6.1", + "@types/long": "^4.0.0", + "abort-controller": "^3.0.0", + "duplexify": "^4.0.0", + "fast-text-encoding": "^1.0.3", + "google-auth-library": "^7.6.1", + "is-stream-ended": "^0.1.4", + "node-fetch": "^2.6.1", + "object-hash": "^2.1.1", + "proto3-json-serializer": "^0.1.1", + "protobufjs": "6.11.2", + "retry-request": "^4.0.0" + }, + "dependencies": { + "node-fetch": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", + "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, + "google-p12-pem": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.2.tgz", + "integrity": "sha512-tjf3IQIt7tWCDsa0ofDQ1qqSCNzahXDxdAGJDbruWqu3eCg5CKLYKN+hi0s6lfvzYZ1GDVr+oDF9OOWlDSdf0A==", + "dev": true, + "requires": { + "node-forge": "^0.10.0" + } + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" + }, + "gtoken": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.1.tgz", + "integrity": "sha512-yqOREjzLHcbzz1UrQoxhBtpk8KjrVhuqPE7od1K2uhyxG2BHjKZetlbLw/SPZak/QqTIQW+addS+EcjqQsZbwQ==", + "dev": true, + "requires": { + "gaxios": "^4.0.0", + "google-p12-pem": "^3.0.3", + "jws": "^4.0.0" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", + "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "requires": { + "ajv": "^5.3.0", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" + }, + "html-minifier": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz", + "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==", + "requires": { + "camel-case": "^3.0.0", + "clean-css": "^4.2.1", + "commander": "^2.19.0", + "he": "^1.2.0", + "param-case": "^2.1.1", + "relateurl": "^0.2.7", + "uglify-js": "^3.5.1" + } + }, + "html-modules-polyfill": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/html-modules-polyfill/-/html-modules-polyfill-0.1.0.tgz", + "integrity": "sha512-ha+rI4VbAciDHsPlUv60WfaeL/XEcnIoN6Tj/tr/iLPikjSQnw8zM7gXmKLdyCHptYK21iKieTNhIqK0JKzDHw==", + "requires": { + "jsdom": "^15.1.1", + "rollup": "^1.19.4" + }, + "dependencies": { + "acorn": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", + "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==" + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.2.tgz", + "integrity": "sha512-GXmKIvbrN3TV7aVqAzVFaMW8F8wzVX7voEBRO3bDA64+EX37YSayggRJP5Xig6HYHBkWKpFg9W5gg6orklubhg==" + } + } + }, + "cssom": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.1.tgz", + "integrity": "sha512-6Aajq0XmukE7HdXUU6IoSWuH1H6gH9z6qmagsstTiN7cW2FNTsb+J2Chs+ufPgZCsV/yo8oaEudQLrb9dGxSVQ==" + }, + "cssstyle": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.0.0.tgz", + "integrity": "sha512-QXSAu2WBsSRXCPjvI43Y40m6fMevvyRm8JVAuF9ksQz5jha4pWP1wpaK7Yu5oLFc6+XAY+hj8YhefyXcBB53gg==", + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + } + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-mimetype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.2.0.tgz", + "integrity": "sha512-5YSO1nMd5D1hY3WzAQV3PzZL83W3YeyR1yW9PcH26Weh1t+Vzh9B6XkDh7aXm83HBZ4nSMvkjvN2H2ySWIvBgw==" + } + } + }, + "escodegen": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", + "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "jsdom": { + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.0.tgz", + "integrity": "sha512-+hRyEfjRPFwTYMmSQ3/f7U9nP8ZNZmbkmUek760ZpxnCPWJIhaaLRuUSvpJ36fZKCGENxLwxClzwpOpnXNfChQ==", + "requires": { + "abab": "^2.0.0", + "acorn": "^7.1.0", + "acorn-globals": "^4.3.2", + "array-equal": "^1.0.0", + "cssom": "^0.4.1", + "cssstyle": "^2.0.0", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.1", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.4", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.7", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^7.0.0", + "xml-name-validator": "^3.0.0" + } + }, + "nwsapi": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", + "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==" + }, + "request-promise-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "requires": { + "lodash": "^4.17.11" + } + }, + "request-promise-native": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", + "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "requires": { + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "dependencies": { + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "rollup": { + "version": "1.32.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", + "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==", + "requires": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + } + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "requires": { + "xmlchars": "^2.1.1" + } + }, + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "ws": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.1.2.tgz", + "integrity": "sha512-gftXq3XI81cJCgkUiAVixA0raD9IVmXqsylCrjRygw4+UOOGzPoxnQ6r/CnVL9i+mDncJo94tSkyrtuuQVBmrg==", + "requires": { + "async-limiter": "^1.0.0" + } + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + } + } + }, + "http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==" + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "idb": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz", + "integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==" + }, + "iframe-load": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/iframe-load/-/iframe-load-0.1.4.tgz", + "integrity": "sha512-59rlJMKsHFSBh/oyJy82wsevdhTEsceKkcyZMee755bY+MfDj2oOX7Yql19L4fgzze1Kqi5E0/InR2UHR+BcPQ==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "requires": { + "@types/estree": "*" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-stream-ended": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jquery": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.0.tgz", + "integrity": "sha512-Xb7SVYMvygPxbFMpTFQiHh1J7HClEaThguL15N/Gg37Lri/qKyhRGZYzHRyLH8Stq3Aow0LsHO2O2ci86fCrNQ==" + }, + "js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsdom": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-12.2.0.tgz", + "integrity": "sha512-QPOggIJ8fquWPLaYYMoh+zqUmdphDtu1ju0QGTitZT1Yd8I5qenPpXM1etzUegu3MjVp8XPzgZxdn8Yj7e40ig==", + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.2", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.0.1", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.0.9", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.3", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.4.3", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.0", + "xml-name-validator": "^3.0.0" + } + }, + "jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=" + }, + "json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "dev": true, + "requires": { + "bignumber.js": "^9.0.0" + } + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "requires": { + "minimist": "^1.2.0" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dev": true, + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dev": true, + "requires": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "requires": { + "invert-kv": "^2.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lit-element": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-2.2.1.tgz", + "integrity": "sha512-ipDcgQ1EpW6Va2Z6dWm79jYdimVepO5GL0eYkZrFvdr0OD/1N260Q9DH+K5HXHFrRoC7dOg+ZpED2XE0TgGdXw==", + "requires": { + "lit-html": "^1.0.0" + } + }, + "lit-html": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-1.1.1.tgz", + "integrity": "sha512-1WqhkPpj+CKwLRXCCbyRGnWkcFKE4ft2+j8C2zaXwFUK9I2vYDzTuDGPh0H9hZcDBEwoe6YpPC8AO5734EPORQ==" + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + }, + "lodash._objecttypes": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz", + "integrity": "sha1-fAt/admKH3ZSn4kLDNsbTf7BHBE=" + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + }, + "lodash.isobject": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", + "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=", + "requires": { + "lodash._objecttypes": "~2.4.1" + } + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lottie-web": { + "version": "5.5.10", + "resolved": "https://registry.npmjs.org/lottie-web/-/lottie-web-5.5.10.tgz", + "integrity": "sha512-8U/WSNKx4y3JdGq1lZh8Phuz/pQsiM6BGQ/rNFjLPGJSaKQ92VTVN7NAOHUsvV0bywsC+ShBWSVUhbuP3NV2tg==" + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + }, + "dependencies": { + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + } + } + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "map-age-cleaner": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz", + "integrity": "sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ==", + "requires": { + "p-defer": "^1.0.0" + } + }, + "matchit": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/matchit/-/matchit-1.0.8.tgz", + "integrity": "sha512-CwPPICzozd/ezCzpVwGYG5bMVieaapnA0vvHDQnmQ2u2vZtVLynoPmvFsZjL67hFOvTBhhpqSR0bq3uloDP/Rw==", + "requires": { + "@arr/every": "^1.0.0" + } + }, + "mem": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", + "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^1.1.0" + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" + }, + "mime-db": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" + }, + "mime-types": { + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "requires": { + "mime-db": "~1.37.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + }, + "dependencies": { + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=" + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "mocha-headless-server": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/mocha-headless-server/-/mocha-headless-server-0.1.2.tgz", + "integrity": "sha512-3zoWMlJC6TNmLLZUxTmVq8nZ05AqEViUQ0Bs6/O74NUTrOzcyPWNORfAhZWVkmo3UskbejFIwiYL/s4hyHtZ8w==", + "requires": { + "puppeteer": "^1.6.0", + "serve-handler": "^3.3.0" + } + }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true + }, + "node-releases": { + "version": "1.1.32", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.32.tgz", + "integrity": "sha512-VhVknkitq8dqtWoluagsGPn3dxTvN9fwgR59fV3D7sLBHe0JfDramsMI8n8mY//ccq/Kkrf8ZRHRpsyVZ3qw1A==", + "requires": { + "semver": "^5.3.0" + } + }, + "nodent-compiler": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/nodent-compiler/-/nodent-compiler-3.2.11.tgz", + "integrity": "sha512-rfDrGWdgIJYomPUzR8nXiWNuIhJ7cVodPeZP3Ho65LEycuaX2uVNZ0ytpcfrmUKzdFeLRtye9+pHe8OynPZuPQ==", + "requires": { + "acorn": ">= 2.5.2 <= 5.7.3", + "acorn-es7-plugin": "^1.1.7", + "nodent-transform": "^3.2.9", + "source-map": "^0.5.7" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "nodent-runtime": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/nodent-runtime/-/nodent-runtime-3.2.1.tgz", + "integrity": "sha512-7Ws63oC+215smeKJQCxzrK21VFVlCFBkwl0MOObt0HOpVQXs3u483sAmtkF33nNqZ5rSOQjB76fgyPBmAUrtCA==" + }, + "nodent-transform": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/nodent-transform/-/nodent-transform-3.2.9.tgz", + "integrity": "sha512-4a5FH4WLi+daH/CGD5o/JWRR8W5tlCkd3nrDSkxbOzscJTyTUITltvOJeQjg3HJ1YgEuNyiPhQbvbtRjkQBByQ==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nwsapi": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.9.tgz", + "integrity": "sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ==" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-hash": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } + }, + "os-locale": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", + "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", + "requires": { + "execa": "^0.10.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + }, + "dependencies": { + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + } + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" + }, + "p-limit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", + "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "requires": { + "no-case": "^2.2.0" + } + }, + "parse-ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.0.0.tgz", + "integrity": "sha512-AddiXFSLLCqj+tCRJ9MrUtHZB4DWojO3tk0NVZ+g5MaMQHF2+p2ktqxuoXyPFLljz/aUK0Nfhd/uGWnhXVXEyA==" + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "path-to-regexp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", + "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=" + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + }, + "polka": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/polka/-/polka-0.5.2.tgz", + "integrity": "sha512-FVg3vDmCqP80tOrs+OeNlgXYmFppTXdjD5E7I4ET1NjvtNmQrb1/mJibybKkb/d4NA7YWAr1ojxuhpL3FHqdlw==", + "requires": { + "@polka/url": "^0.5.0", + "trouter": "^2.0.1" + } + }, + "postcss": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.5.tgz", + "integrity": "sha512-HBNpviAUFCKvEh7NZhw1e8MBPivRszIiUnhrJ+sBFVSYSqubrzwX3KG51mYgcRHX8j/cAgZJedONZcm5jTBdgQ==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "pretty-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-4.0.0.tgz", + "integrity": "sha512-qG66ahoLCwpLXD09ZPHSCbUWYTqdosB7SMP4OffgTgL2PBKXMuUsrk5Bwg8q4qPkjTXsKBMr+YK3Ltd/6F9s/Q==", + "requires": { + "parse-ms": "^2.0.0" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "promise-polyfill": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz", + "integrity": "sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==" + }, + "proto3-json-serializer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-0.1.5.tgz", + "integrity": "sha512-G395jcZkgNXNeS+6FGqd09TsXeoCs9wmBWByDiwFy7Yd7HD8pyfyvf6q+rGh7PhT4AshRpG4NowzoKYUtkNjKg==", + "dev": true + }, + "protobufjs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz", + "integrity": "sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "16.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", + "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==" + } + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" + }, + "psl": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz", + "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "puppeteer": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.20.0.tgz", + "integrity": "sha512-bt48RDBy2eIwZPrkgbcwHtb51mj2nKvHOPMaSH2IsWiv7lOG9k9zhaRzpDZafrk05ajMc3cu+lSQYYOfH2DkVQ==", + "requires": { + "debug": "^4.1.0", + "extract-zip": "^1.6.6", + "https-proxy-agent": "^2.2.1", + "mime": "^2.0.3", + "progress": "^2.0.1", + "proxy-from-env": "^1.0.0", + "rimraf": "^2.6.1", + "ws": "^6.1.0" + }, + "dependencies": { + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.1.1.tgz", + "integrity": "sha512-XXdSXZrQuvqoETj50+JAitxz1UPdt5dupjT6T5nVB+WvjMv2XKYj+s7hPeAVCXvmJrL36O4YYyWlIC3an2ePiQ==", + "requires": { + "picomatch": "^2.0.4" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" + }, + "regenerate-unicode-properties": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", + "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" + }, + "regenerator-transform": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", + "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", + "requires": { + "private": "^0.1.6" + } + }, + "regexp-tree": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.13.tgz", + "integrity": "sha512-hwdV/GQY5F8ReLZWO+W1SRoN5YfpOKY6852+tBFcma72DKBIcHjPRIlIvQN35bCOljuAfP2G2iB0FC/w236mUw==" + }, + "regexpu-core": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", + "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.1.0", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + } + }, + "regjsgen": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", + "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==" + }, + "regjsparser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-promise-core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", + "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "requires": { + "lodash": "^4.13.1" + } + }, + "request-promise-native": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", + "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", + "requires": { + "request-promise-core": "1.1.1", + "stealthy-require": "^1.1.0", + "tough-cookie": ">=2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "retry-request": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.2.2.tgz", + "integrity": "sha512-xA93uxUD/rogV7BV59agW/JHPGXeREMWiZc9jhcwY4YdZ7QOtC7qbomYg0n4wyk2lJhggjvKvhNX8wln/Aldhg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "extend": "^3.0.2" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "rollup": { + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", + "requires": { + "fsevents": "~2.3.2" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sass": { + "version": "1.22.9", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.22.9.tgz", + "integrity": "sha512-FzU1X2V8DlnqabrL4u7OBwD2vcOzNMongEJEx3xMEhWY/v26FFR3aG0hyeu2T965sfR0E9ufJwmG+Qjz78vFPQ==", + "requires": { + "chokidar": ">=2.0.0 <4.0.0" + } + }, + "saxes": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.3.tgz", + "integrity": "sha512-Nc5DXc5A+m3rUDtkS+vHlBWKT7mCKjJPyia7f8YMW773hsXVv2wEHQZGE0zs4+5PLwz9U5Sbl/94Cnd9vHV7Bg==", + "requires": { + "xmlchars": "^1.3.1" + } + }, + "semver": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==" + }, + "serve-handler": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-3.6.2.tgz", + "integrity": "sha512-r+B03kGRis30NVsiIFdLJuU6VEkcJ8CSAHYKgoE8Hxsj6y6tFJ0QPSHMHFcu/Wf7v+PVm0RqEo/g8cQxfYL/AA==", + "requires": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "fast-url-parser": "1.1.3", + "glob-slasher": "1.0.1", + "mime-types": "2.1.18", + "minimatch": "3.0.4", + "path-is-inside": "1.0.2", + "path-to-regexp": "2.2.1" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "requires": { + "mime-db": "~1.33.0" + } + } + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", + "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "sshpk": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.1.tgz", + "integrity": "sha512-mSdgNUaidk+dRU5MhYtN9zebdzF2iG0cNPWy8HG+W8y+fT1JnSkh0fzzpjOa0L7P8i1Rscz38t0h4gPcKz43xA==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, + "stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "dev": true, + "requires": { + "stubs": "^3.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" + }, + "teeny-request": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.1.3.tgz", + "integrity": "sha512-Ew3aoFzgQEatLA5OBIjdr1DWJUaC1xardG+qbPPo5k/y/3fMwXLxpjh5UB5dVfElktLaQbbMs80chkz53ByvSg==", + "dev": true, + "requires": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.1", + "stream-events": "^1.0.5", + "uuid": "^8.0.0" + }, + "dependencies": { + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "node-fetch": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", + "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, + "terser": { + "version": "3.10.11", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.10.11.tgz", + "integrity": "sha512-iruZ7j14oBbRYJC5cP0/vTU7YOWjN+J1ZskEGoF78tFzXdkK2hbCL/3TRZN8XB+MuvFhvOHMp7WkOCBO4VEL5g==", + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1", + "source-map-support": "~0.5.6" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" + } + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==" + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "toxic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toxic/-/toxic-1.0.1.tgz", + "integrity": "sha512-WI3rIGdcaKULYg7KVoB0zcjikqvcYYvcuT6D89bFPz2rVR0Rl0PK6x8/X62rtdLtBKIE985NzVf/auTtGegIIg==", + "requires": { + "lodash": "^4.17.10" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + } + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" + }, + "trouter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/trouter/-/trouter-2.0.1.tgz", + "integrity": "sha512-kr8SKKw94OI+xTGOkfsvwZQ8mWoikZDd2n8XZHjJVZUARZT+4/VV6cacRS6CLsH9bNm+HFIPU1Zx4CnNnb4qlQ==", + "requires": { + "matchit": "^1.0.0" + } + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "uglify-js": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", + "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", + "requires": { + "commander": "~2.20.0", + "source-map": "~0.6.1" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", + "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==" + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", + "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==" + }, + "unistore": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/unistore/-/unistore-3.4.1.tgz", + "integrity": "sha512-p2Ej8qqrqcD10Ah0ZUKUU/mhRB8pM4q6gzjxq9kZpgxa8dks7oHT8jDP4CqLhoRof3RXOZLKB9EBV1DTzHiJRw==" + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "extsprintf": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz", + "integrity": "sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=" + } + } + }, + "vinyl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + }, + "vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", + "requires": { + "source-map": "^0.5.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "requires": { + "browser-process-hrtime": "^0.1.2" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "web-animations-js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/web-animations-js/-/web-animations-js-2.3.1.tgz", + "integrity": "sha1-Om2bwVGWN3qQ+OKAP6UmIWWwRRA=" + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", + "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" + }, + "whatwg-mimetype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.2.0.tgz", + "integrity": "sha512-5YSO1nMd5D1hY3WzAQV3PzZL83W3YeyR1yW9PcH26Weh1t+Vzh9B6XkDh7aXm83HBZ4nSMvkjvN2H2ySWIvBgw==" + }, + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "xmlchars": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-1.3.1.tgz", + "integrity": "sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw==" + }, + "xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" + }, + "xregexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==" + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", + "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^2.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^10.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "requires": { + "camelcase": "^4.1.0" + } + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + } +} diff --git a/internal/remediation/fixtures/santatracker/package.json b/internal/remediation/fixtures/santatracker/package.json new file mode 100644 index 00000000000..4d4fb34106c --- /dev/null +++ b/internal/remediation/fixtures/santatracker/package.json @@ -0,0 +1,66 @@ +{ + "name": "santatracker", + "version": "2021.1.0", + "license": "Apache-2.0", + "scripts": { + "dev": "npm run start", + "start": "./serve.js", + "release": "./release.js", + "test": "mocha-headless-server src/api/test.html", + "staging-check": "node .cloudbuild/staging-check.js", + "postinstall": "ln -s ../node_modules static/node_modules || true" + }, + "dependencies": { + "@babel/core": "^7.6.0", + "@babel/preset-env": "^7.6.0", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-node-resolve": "^13.0.6", + "@webcomponents/webcomponentsjs": "^2.4.0", + "autoprefixer": "^9.3.0", + "babel-plugin-func-wrap": "^1.1.0", + "chai": "^4.2.0", + "chalk": "^2.4.2", + "clipboardy": "^2.1.0", + "core-js": "^3.3.2", + "custom-event-polyfill": "^1.0.7", + "dat.gui": "^0.7.3", + "dhost": "^0.1.9", + "esm-resolve": "^1.0.6", + "event-target": "^1.2.3", + "fancy-log": "^1.3.2", + "fast-async": "^6.3.8", + "firebase": "^8.10.0", + "git-last-commit": "^1.0.1", + "google-closure-compiler": "^20190909.0.0", + "google-closure-library": "^20190909.0.0", + "html-entities": "^1.2.1", + "html-minifier": "^4.0.0", + "html-modules-polyfill": "^0.1.0", + "iframe-load": "^0.1.4", + "jquery": "^3.5.0", + "jsdom": "^12.2.0", + "json5": "^2.1.0", + "lit-element": "^2.2.1", + "lottie-web": "^5.5.10", + "mime-types": "^2.1.21", + "mocha": "^5.2.0", + "mocha-headless-server": "^0.1.2", + "parse5": "^5.1.0", + "polka": "^0.5.2", + "pretty-ms": "^4.0.0", + "regenerator-runtime": "^0.13.3", + "rimraf": "^3.0.2", + "rollup": "^2.59.0", + "sass": "^1.22.9", + "terser": "^3.10.11", + "tmp": "^0.0.33", + "unistore": "^3.4.1", + "web-animations-js": "^2.3.1", + "whatwg-fetch": "^3.0.0", + "yargs": "^12.0.2" + }, + "devDependencies": { + "@google-cloud/cloudbuild": "^2.6.0", + "@google-cloud/error-reporting": "^2.0.4" + } +} diff --git a/internal/remediation/fixtures/santatracker/universe.yaml b/internal/remediation/fixtures/santatracker/universe.yaml new file mode 100644 index 00000000000..8e6b357ad18 --- /dev/null +++ b/internal/remediation/fixtures/santatracker/universe.yaml @@ -0,0 +1,15686 @@ +# Automatically generated by generate_mock_resolution_universe on 07 May 24 15:10 AEST. DO NOT EDIT. +system: NPM +schema: | + @ampproject/remapping + 2.3.0 + @jridgewell/gen-mapping@^0.3.5 + @jridgewell/trace-mapping@^0.3.24 + @arr/every + 1.0.0 + 1.0.1 + @babel/code-frame + 7.0.0 + @babel/highlight@^7.0.0 + 7.5.5 + @babel/highlight@^7.0.0 + 7.24.2 + @babel/highlight@^7.24.2 + picocolors@^1.0.0 + @babel/compat-data + 7.24.4 + @babel/core + 7.6.0 + @babel/code-frame@^7.5.5 + @babel/generator@^7.6.0 + @babel/helpers@^7.6.0 + @babel/parser@^7.6.0 + @babel/template@^7.6.0 + @babel/traverse@^7.6.0 + @babel/types@^7.6.0 + convert-source-map@^1.1.0 + debug@^4.1.0 + json5@^2.1.0 + lodash@^4.17.13 + resolve@^1.3.2 + semver@^5.4.1 + source-map@^0.5.0 + 7.24.5 + @ampproject/remapping@^2.2.0 + @babel/code-frame@^7.24.2 + @babel/generator@^7.24.5 + @babel/helper-compilation-targets@^7.23.6 + @babel/helper-module-transforms@^7.24.5 + @babel/helpers@^7.24.5 + @babel/parser@^7.24.5 + @babel/template@^7.24.0 + @babel/traverse@^7.24.5 + @babel/types@^7.24.5 + convert-source-map@^2.0.0 + debug@^4.1.0 + gensync@^1.0.0-beta.2 + json5@^2.2.3 + semver@^6.3.1 + @babel/generator + 7.6.0 + @babel/types@^7.6.0 + jsesc@^2.5.1 + lodash@^4.17.13 + source-map@^0.5.0 + trim-right@^1.0.1 + 7.24.5 + @babel/types@^7.24.5 + @jridgewell/gen-mapping@^0.3.5 + @jridgewell/trace-mapping@^0.3.25 + jsesc@^2.5.1 + @babel/helper-annotate-as-pure + 7.0.0 + @babel/types@^7.0.0 + 7.22.5 + @babel/types@^7.22.5 + @babel/helper-builder-binary-assignment-operator-visitor + 7.1.0 + @babel/helper-explode-assignable-expression@^7.1.0 + @babel/types@^7.0.0 + 7.22.15 + @babel/types@^7.22.15 + @babel/helper-call-delegate + 7.4.4 + @babel/helper-hoist-variables@^7.4.4 + @babel/traverse@^7.4.4 + @babel/types@^7.4.4 + @babel/helper-compilation-targets + 7.23.6 + @babel/compat-data@^7.23.5 + @babel/helper-validator-option@^7.23.5 + browserslist@^4.22.2 + lru-cache@^5.1.1 + semver@^6.3.1 + @babel/helper-create-class-features-plugin + 7.24.5 + Scope peer|@babel/core@^7.0.0 + @babel/helper-annotate-as-pure@^7.22.5 + @babel/helper-environment-visitor@^7.22.20 + @babel/helper-function-name@^7.23.0 + @babel/helper-member-expression-to-functions@^7.24.5 + @babel/helper-optimise-call-expression@^7.22.5 + @babel/helper-replace-supers@^7.24.1 + @babel/helper-skip-transparent-expression-wrappers@^7.22.5 + @babel/helper-split-export-declaration@^7.24.5 + semver@^6.3.1 + @babel/helper-create-regexp-features-plugin + 7.22.15 + Scope peer|@babel/core@^7.0.0 + @babel/helper-annotate-as-pure@^7.22.5 + regexpu-core@^5.3.1 + semver@^6.3.1 + @babel/helper-define-map + 7.5.5 + @babel/helper-function-name@^7.1.0 + @babel/types@^7.5.5 + lodash@^4.17.13 + @babel/helper-define-polyfill-provider + 0.6.2 + Scope peer|@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0 + @babel/helper-compilation-targets@^7.22.6 + @babel/helper-plugin-utils@^7.22.5 + debug@^4.1.1 + lodash.debounce@^4.0.8 + resolve@^1.14.2 + @babel/helper-environment-visitor + 7.22.20 + @babel/helper-explode-assignable-expression + 7.1.0 + @babel/traverse@^7.1.0 + @babel/types@^7.0.0 + @babel/helper-function-name + 7.1.0 + @babel/helper-get-function-arity@^7.0.0 + @babel/template@^7.1.0 + @babel/types@^7.0.0 + 7.23.0 + @babel/template@^7.22.15 + @babel/types@^7.23.0 + @babel/helper-get-function-arity + 7.0.0 + @babel/types@^7.0.0 + @babel/helper-hoist-variables + 7.4.4 + @babel/types@^7.4.4 + 7.22.5 + @babel/types@^7.22.5 + @babel/helper-member-expression-to-functions + 7.5.5 + @babel/types@^7.5.5 + 7.24.5 + @babel/types@^7.24.5 + @babel/helper-module-imports + 7.0.0 + @babel/types@^7.0.0 + 7.24.3 + @babel/types@^7.24.0 + @babel/helper-module-transforms + 7.5.5 + @babel/helper-module-imports@^7.0.0 + @babel/helper-simple-access@^7.1.0 + @babel/helper-split-export-declaration@^7.4.4 + @babel/template@^7.4.4 + @babel/types@^7.5.5 + lodash@^4.17.13 + 7.24.5 + Scope peer|@babel/core@^7.0.0 + @babel/helper-environment-visitor@^7.22.20 + @babel/helper-module-imports@^7.24.3 + @babel/helper-simple-access@^7.24.5 + @babel/helper-split-export-declaration@^7.24.5 + @babel/helper-validator-identifier@^7.24.5 + @babel/helper-optimise-call-expression + 7.0.0 + @babel/types@^7.0.0 + 7.22.5 + @babel/types@^7.22.5 + @babel/helper-plugin-utils + 7.0.0 + 7.24.5 + @babel/helper-regex + 7.5.5 + lodash@^4.17.13 + @babel/helper-remap-async-to-generator + 7.1.0 + @babel/helper-annotate-as-pure@^7.0.0 + @babel/helper-wrap-function@^7.1.0 + @babel/template@^7.1.0 + @babel/traverse@^7.1.0 + @babel/types@^7.0.0 + 7.22.20 + Scope peer|@babel/core@^7.0.0 + @babel/helper-annotate-as-pure@^7.22.5 + @babel/helper-environment-visitor@^7.22.20 + @babel/helper-wrap-function@^7.22.20 + @babel/helper-replace-supers + 7.5.5 + @babel/helper-member-expression-to-functions@^7.5.5 + @babel/helper-optimise-call-expression@^7.0.0 + @babel/traverse@^7.5.5 + @babel/types@^7.5.5 + 7.24.1 + Scope peer|@babel/core@^7.0.0 + @babel/helper-environment-visitor@^7.22.20 + @babel/helper-member-expression-to-functions@^7.23.0 + @babel/helper-optimise-call-expression@^7.22.5 + @babel/helper-simple-access + 7.1.0 + @babel/template@^7.1.0 + @babel/types@^7.0.0 + 7.24.5 + @babel/types@^7.24.5 + @babel/helper-skip-transparent-expression-wrappers + 7.22.5 + @babel/types@^7.22.5 + @babel/helper-split-export-declaration + 7.4.4 + @babel/types@^7.4.4 + 7.24.5 + @babel/types@^7.24.5 + @babel/helper-string-parser + 7.24.1 + @babel/helper-validator-identifier + 7.24.5 + @babel/helper-validator-option + 7.23.5 + @babel/helper-wrap-function + 7.2.0 + @babel/helper-function-name@^7.1.0 + @babel/template@^7.1.0 + @babel/traverse@^7.1.0 + @babel/types@^7.2.0 + 7.24.5 + @babel/helper-function-name@^7.23.0 + @babel/template@^7.24.0 + @babel/types@^7.24.5 + @babel/helpers + 7.6.0 + @babel/template@^7.6.0 + @babel/traverse@^7.6.0 + @babel/types@^7.6.0 + 7.24.5 + @babel/template@^7.24.0 + @babel/traverse@^7.24.5 + @babel/types@^7.24.5 + @babel/highlight + 7.0.0 + chalk@^2.0.0 + esutils@^2.0.2 + js-tokens@^4.0.0 + 7.24.5 + @babel/helper-validator-identifier@^7.24.5 + chalk@^2.4.2 + js-tokens@^4.0.0 + picocolors@^1.0.0 + @babel/parser + 7.1.2 + 7.6.0 + 7.24.5 + @babel/plugin-bugfix-firefox-class-in-computed-class-key + 7.24.5 + Scope peer|@babel/core@^7.0.0 + @babel/helper-environment-visitor@^7.22.20 + @babel/helper-plugin-utils@^7.24.5 + @babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression + 7.24.1 + Scope peer|@babel/core@^7.0.0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining + 7.24.1 + Scope peer|@babel/core@^7.13.0 + @babel/helper-plugin-utils@^7.24.0 + @babel/helper-skip-transparent-expression-wrappers@^7.22.5 + @babel/plugin-transform-optional-chaining@^7.24.1 + @babel/plugin-bugfix-v8-static-class-fields-redefine-readonly + 7.24.1 + Scope peer|@babel/core@^7.0.0 + @babel/helper-environment-visitor@^7.22.20 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-proposal-async-generator-functions + 7.2.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + @babel/helper-remap-async-to-generator@^7.1.0 + @babel/plugin-syntax-async-generators@^7.2.0 + @babel/plugin-proposal-dynamic-import + 7.5.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + @babel/plugin-syntax-dynamic-import@^7.2.0 + @babel/plugin-proposal-json-strings + 7.2.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + @babel/plugin-syntax-json-strings@^7.2.0 + @babel/plugin-proposal-object-rest-spread + 7.5.5 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + @babel/plugin-syntax-object-rest-spread@^7.2.0 + @babel/plugin-proposal-optional-catch-binding + 7.2.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + @babel/plugin-syntax-optional-catch-binding@^7.2.0 + @babel/plugin-proposal-private-property-in-object + 7.21.0-placeholder-for-preset-env.2 + Scope peer|@babel/core@^7.0.0-0 + @babel/plugin-proposal-unicode-property-regex + 7.4.4 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + @babel/helper-regex@^7.4.4 + regexpu-core@^4.5.4 + @babel/plugin-syntax-async-generators + 7.2.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + 7.8.4 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.8.0 + @babel/plugin-syntax-class-properties + 7.12.13 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.12.13 + @babel/plugin-syntax-class-static-block + 7.14.5 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.14.5 + @babel/plugin-syntax-dynamic-import + 7.2.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + 7.8.3 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.8.0 + @babel/plugin-syntax-export-namespace-from + 7.8.3 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.8.3 + @babel/plugin-syntax-import-assertions + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-syntax-import-attributes + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-syntax-import-meta + 7.10.4 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.10.4 + @babel/plugin-syntax-json-strings + 7.2.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + 7.8.3 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.8.0 + @babel/plugin-syntax-logical-assignment-operators + 7.10.4 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.10.4 + @babel/plugin-syntax-nullish-coalescing-operator + 7.8.3 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.8.0 + @babel/plugin-syntax-numeric-separator + 7.10.4 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.10.4 + @babel/plugin-syntax-object-rest-spread + 7.2.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + 7.8.3 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.8.0 + @babel/plugin-syntax-optional-catch-binding + 7.2.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + 7.8.3 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.8.0 + @babel/plugin-syntax-optional-chaining + 7.8.3 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.8.0 + @babel/plugin-syntax-private-property-in-object + 7.14.5 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.14.5 + @babel/plugin-syntax-top-level-await + 7.14.5 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.14.5 + @babel/plugin-syntax-unicode-sets-regex + 7.18.6 + Scope peer|@babel/core@^7.0.0 + @babel/helper-create-regexp-features-plugin@^7.18.6 + @babel/helper-plugin-utils@^7.18.6 + @babel/plugin-transform-arrow-functions + 7.2.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-transform-async-generator-functions + 7.24.3 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-environment-visitor@^7.22.20 + @babel/helper-plugin-utils@^7.24.0 + @babel/helper-remap-async-to-generator@^7.22.20 + @babel/plugin-syntax-async-generators@^7.8.4 + @babel/plugin-transform-async-to-generator + 7.5.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-module-imports@^7.0.0 + @babel/helper-plugin-utils@^7.0.0 + @babel/helper-remap-async-to-generator@^7.1.0 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-module-imports@^7.24.1 + @babel/helper-plugin-utils@^7.24.0 + @babel/helper-remap-async-to-generator@^7.22.20 + @babel/plugin-transform-block-scoped-functions + 7.2.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-transform-block-scoping + 7.6.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + lodash@^4.17.13 + 7.24.5 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.5 + @babel/plugin-transform-class-properties + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-create-class-features-plugin@^7.24.1 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-transform-class-static-block + 7.24.4 + Scope peer|@babel/core@^7.12.0 + @babel/helper-create-class-features-plugin@^7.24.4 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-syntax-class-static-block@^7.14.5 + @babel/plugin-transform-classes + 7.5.5 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-annotate-as-pure@^7.0.0 + @babel/helper-define-map@^7.5.5 + @babel/helper-function-name@^7.1.0 + @babel/helper-optimise-call-expression@^7.0.0 + @babel/helper-plugin-utils@^7.0.0 + @babel/helper-replace-supers@^7.5.5 + @babel/helper-split-export-declaration@^7.4.4 + globals@^11.1.0 + 7.24.5 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-annotate-as-pure@^7.22.5 + @babel/helper-compilation-targets@^7.23.6 + @babel/helper-environment-visitor@^7.22.20 + @babel/helper-function-name@^7.23.0 + @babel/helper-plugin-utils@^7.24.5 + @babel/helper-replace-supers@^7.24.1 + @babel/helper-split-export-declaration@^7.24.5 + globals@^11.1.0 + @babel/plugin-transform-computed-properties + 7.2.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/template@^7.24.0 + @babel/plugin-transform-destructuring + 7.6.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + 7.24.5 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.5 + @babel/plugin-transform-dotall-regex + 7.4.4 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + @babel/helper-regex@^7.4.4 + regexpu-core@^4.5.4 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-create-regexp-features-plugin@^7.22.15 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-transform-duplicate-keys + 7.5.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-transform-dynamic-import + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-syntax-dynamic-import@^7.8.3 + @babel/plugin-transform-exponentiation-operator + 7.2.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-builder-binary-assignment-operator-visitor@^7.1.0 + @babel/helper-plugin-utils@^7.0.0 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-builder-binary-assignment-operator-visitor@^7.22.15 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-transform-export-namespace-from + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-syntax-export-namespace-from@^7.8.3 + @babel/plugin-transform-for-of + 7.4.4 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/helper-skip-transparent-expression-wrappers@^7.22.5 + @babel/plugin-transform-function-name + 7.4.4 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-function-name@^7.1.0 + @babel/helper-plugin-utils@^7.0.0 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-compilation-targets@^7.23.6 + @babel/helper-function-name@^7.23.0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-transform-json-strings + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-syntax-json-strings@^7.8.3 + @babel/plugin-transform-literals + 7.2.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-transform-logical-assignment-operators + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-syntax-logical-assignment-operators@^7.10.4 + @babel/plugin-transform-member-expression-literals + 7.2.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-transform-modules-amd + 7.5.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-module-transforms@^7.1.0 + @babel/helper-plugin-utils@^7.0.0 + babel-plugin-dynamic-import-node@^2.3.0 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-module-transforms@^7.23.3 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-transform-modules-commonjs + 7.6.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-module-transforms@^7.4.4 + @babel/helper-plugin-utils@^7.0.0 + @babel/helper-simple-access@^7.1.0 + babel-plugin-dynamic-import-node@^2.3.0 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-module-transforms@^7.23.3 + @babel/helper-plugin-utils@^7.24.0 + @babel/helper-simple-access@^7.22.5 + @babel/plugin-transform-modules-systemjs + 7.5.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-hoist-variables@^7.4.4 + @babel/helper-plugin-utils@^7.0.0 + babel-plugin-dynamic-import-node@^2.3.0 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-module-transforms@^7.23.3 + @babel/helper-plugin-utils@^7.24.0 + @babel/helper-validator-identifier@^7.22.20 + @babel/plugin-transform-modules-umd + 7.2.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-module-transforms@^7.1.0 + @babel/helper-plugin-utils@^7.0.0 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-module-transforms@^7.23.3 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-transform-named-capturing-groups-regex + 7.6.0 + Scope peer|@babel/core@^7.0.0 + regexp-tree@^0.1.13 + 7.22.5 + Scope peer|@babel/core@^7.0.0 + @babel/helper-create-regexp-features-plugin@^7.22.5 + @babel/helper-plugin-utils@^7.22.5 + @babel/plugin-transform-new-target + 7.4.4 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-transform-nullish-coalescing-operator + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-syntax-nullish-coalescing-operator@^7.8.3 + @babel/plugin-transform-numeric-separator + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-syntax-numeric-separator@^7.10.4 + @babel/plugin-transform-object-rest-spread + 7.24.5 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-compilation-targets@^7.23.6 + @babel/helper-plugin-utils@^7.24.5 + @babel/plugin-syntax-object-rest-spread@^7.8.3 + @babel/plugin-transform-parameters@^7.24.5 + @babel/plugin-transform-object-super + 7.5.5 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + @babel/helper-replace-supers@^7.5.5 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/helper-replace-supers@^7.24.1 + @babel/plugin-transform-optional-catch-binding + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-syntax-optional-catch-binding@^7.8.3 + @babel/plugin-transform-optional-chaining + 7.24.5 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.5 + @babel/helper-skip-transparent-expression-wrappers@^7.22.5 + @babel/plugin-syntax-optional-chaining@^7.8.3 + @babel/plugin-transform-parameters + 7.4.4 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-call-delegate@^7.4.4 + @babel/helper-get-function-arity@^7.0.0 + @babel/helper-plugin-utils@^7.0.0 + 7.24.5 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.5 + @babel/plugin-transform-private-methods + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-create-class-features-plugin@^7.24.1 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-transform-private-property-in-object + 7.24.5 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-annotate-as-pure@^7.22.5 + @babel/helper-create-class-features-plugin@^7.24.5 + @babel/helper-plugin-utils@^7.24.5 + @babel/plugin-syntax-private-property-in-object@^7.14.5 + @babel/plugin-transform-property-literals + 7.2.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-transform-regenerator + 7.4.5 + Scope peer|@babel/core@^7.0.0-0 + regenerator-transform@^0.14.0 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + regenerator-transform@^0.15.2 + @babel/plugin-transform-reserved-words + 7.2.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-transform-shorthand-properties + 7.2.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-transform-spread + 7.2.2 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/helper-skip-transparent-expression-wrappers@^7.22.5 + @babel/plugin-transform-sticky-regex + 7.2.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + @babel/helper-regex@^7.0.0 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-transform-template-literals + 7.4.4 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-annotate-as-pure@^7.0.0 + @babel/helper-plugin-utils@^7.0.0 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-transform-typeof-symbol + 7.2.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + 7.24.5 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.5 + @babel/plugin-transform-unicode-escapes + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-transform-unicode-property-regex + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-create-regexp-features-plugin@^7.22.15 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-transform-unicode-regex + 7.4.4 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-plugin-utils@^7.0.0 + @babel/helper-regex@^7.4.4 + regexpu-core@^4.5.4 + 7.24.1 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-create-regexp-features-plugin@^7.22.15 + @babel/helper-plugin-utils@^7.24.0 + @babel/plugin-transform-unicode-sets-regex + 7.24.1 + Scope peer|@babel/core@^7.0.0 + @babel/helper-create-regexp-features-plugin@^7.22.15 + @babel/helper-plugin-utils@^7.24.0 + @babel/preset-env + 7.6.0 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-module-imports@^7.0.0 + @babel/helper-plugin-utils@^7.0.0 + @babel/plugin-proposal-async-generator-functions@^7.2.0 + @babel/plugin-proposal-dynamic-import@^7.5.0 + @babel/plugin-proposal-json-strings@^7.2.0 + @babel/plugin-proposal-object-rest-spread@^7.5.5 + @babel/plugin-proposal-optional-catch-binding@^7.2.0 + @babel/plugin-proposal-unicode-property-regex@^7.4.4 + @babel/plugin-syntax-async-generators@^7.2.0 + @babel/plugin-syntax-dynamic-import@^7.2.0 + @babel/plugin-syntax-json-strings@^7.2.0 + @babel/plugin-syntax-object-rest-spread@^7.2.0 + @babel/plugin-syntax-optional-catch-binding@^7.2.0 + @babel/plugin-transform-arrow-functions@^7.2.0 + @babel/plugin-transform-async-to-generator@^7.5.0 + @babel/plugin-transform-block-scoped-functions@^7.2.0 + @babel/plugin-transform-block-scoping@^7.6.0 + @babel/plugin-transform-classes@^7.5.5 + @babel/plugin-transform-computed-properties@^7.2.0 + @babel/plugin-transform-destructuring@^7.6.0 + @babel/plugin-transform-dotall-regex@^7.4.4 + @babel/plugin-transform-duplicate-keys@^7.5.0 + @babel/plugin-transform-exponentiation-operator@^7.2.0 + @babel/plugin-transform-for-of@^7.4.4 + @babel/plugin-transform-function-name@^7.4.4 + @babel/plugin-transform-literals@^7.2.0 + @babel/plugin-transform-member-expression-literals@^7.2.0 + @babel/plugin-transform-modules-amd@^7.5.0 + @babel/plugin-transform-modules-commonjs@^7.6.0 + @babel/plugin-transform-modules-systemjs@^7.5.0 + @babel/plugin-transform-modules-umd@^7.2.0 + @babel/plugin-transform-named-capturing-groups-regex@^7.6.0 + @babel/plugin-transform-new-target@^7.4.4 + @babel/plugin-transform-object-super@^7.5.5 + @babel/plugin-transform-parameters@^7.4.4 + @babel/plugin-transform-property-literals@^7.2.0 + @babel/plugin-transform-regenerator@^7.4.5 + @babel/plugin-transform-reserved-words@^7.2.0 + @babel/plugin-transform-shorthand-properties@^7.2.0 + @babel/plugin-transform-spread@^7.2.0 + @babel/plugin-transform-sticky-regex@^7.2.0 + @babel/plugin-transform-template-literals@^7.4.4 + @babel/plugin-transform-typeof-symbol@^7.2.0 + @babel/plugin-transform-unicode-regex@^7.4.4 + @babel/types@^7.6.0 + browserslist@^4.6.0 + core-js-compat@^3.1.1 + invariant@^2.2.2 + js-levenshtein@^1.1.3 + semver@^5.5.0 + 7.24.5 + @babel/compat-data@^7.24.4 + Scope peer|@babel/core@^7.0.0-0 + @babel/helper-compilation-targets@^7.23.6 + @babel/helper-plugin-utils@^7.24.5 + @babel/helper-validator-option@^7.23.5 + @babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.5 + @babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1 + @babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.1 + @babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.1 + @babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2 + @babel/plugin-syntax-async-generators@^7.8.4 + @babel/plugin-syntax-class-properties@^7.12.13 + @babel/plugin-syntax-class-static-block@^7.14.5 + @babel/plugin-syntax-dynamic-import@^7.8.3 + @babel/plugin-syntax-export-namespace-from@^7.8.3 + @babel/plugin-syntax-import-assertions@^7.24.1 + @babel/plugin-syntax-import-attributes@^7.24.1 + @babel/plugin-syntax-import-meta@^7.10.4 + @babel/plugin-syntax-json-strings@^7.8.3 + @babel/plugin-syntax-logical-assignment-operators@^7.10.4 + @babel/plugin-syntax-nullish-coalescing-operator@^7.8.3 + @babel/plugin-syntax-numeric-separator@^7.10.4 + @babel/plugin-syntax-object-rest-spread@^7.8.3 + @babel/plugin-syntax-optional-catch-binding@^7.8.3 + @babel/plugin-syntax-optional-chaining@^7.8.3 + @babel/plugin-syntax-private-property-in-object@^7.14.5 + @babel/plugin-syntax-top-level-await@^7.14.5 + @babel/plugin-syntax-unicode-sets-regex@^7.18.6 + @babel/plugin-transform-arrow-functions@^7.24.1 + @babel/plugin-transform-async-generator-functions@^7.24.3 + @babel/plugin-transform-async-to-generator@^7.24.1 + @babel/plugin-transform-block-scoped-functions@^7.24.1 + @babel/plugin-transform-block-scoping@^7.24.5 + @babel/plugin-transform-class-properties@^7.24.1 + @babel/plugin-transform-class-static-block@^7.24.4 + @babel/plugin-transform-classes@^7.24.5 + @babel/plugin-transform-computed-properties@^7.24.1 + @babel/plugin-transform-destructuring@^7.24.5 + @babel/plugin-transform-dotall-regex@^7.24.1 + @babel/plugin-transform-duplicate-keys@^7.24.1 + @babel/plugin-transform-dynamic-import@^7.24.1 + @babel/plugin-transform-exponentiation-operator@^7.24.1 + @babel/plugin-transform-export-namespace-from@^7.24.1 + @babel/plugin-transform-for-of@^7.24.1 + @babel/plugin-transform-function-name@^7.24.1 + @babel/plugin-transform-json-strings@^7.24.1 + @babel/plugin-transform-literals@^7.24.1 + @babel/plugin-transform-logical-assignment-operators@^7.24.1 + @babel/plugin-transform-member-expression-literals@^7.24.1 + @babel/plugin-transform-modules-amd@^7.24.1 + @babel/plugin-transform-modules-commonjs@^7.24.1 + @babel/plugin-transform-modules-systemjs@^7.24.1 + @babel/plugin-transform-modules-umd@^7.24.1 + @babel/plugin-transform-named-capturing-groups-regex@^7.22.5 + @babel/plugin-transform-new-target@^7.24.1 + @babel/plugin-transform-nullish-coalescing-operator@^7.24.1 + @babel/plugin-transform-numeric-separator@^7.24.1 + @babel/plugin-transform-object-rest-spread@^7.24.5 + @babel/plugin-transform-object-super@^7.24.1 + @babel/plugin-transform-optional-catch-binding@^7.24.1 + @babel/plugin-transform-optional-chaining@^7.24.5 + @babel/plugin-transform-parameters@^7.24.5 + @babel/plugin-transform-private-methods@^7.24.1 + @babel/plugin-transform-private-property-in-object@^7.24.5 + @babel/plugin-transform-property-literals@^7.24.1 + @babel/plugin-transform-regenerator@^7.24.1 + @babel/plugin-transform-reserved-words@^7.24.1 + @babel/plugin-transform-shorthand-properties@^7.24.1 + @babel/plugin-transform-spread@^7.24.1 + @babel/plugin-transform-sticky-regex@^7.24.1 + @babel/plugin-transform-template-literals@^7.24.1 + @babel/plugin-transform-typeof-symbol@^7.24.5 + @babel/plugin-transform-unicode-escapes@^7.24.1 + @babel/plugin-transform-unicode-property-regex@^7.24.1 + @babel/plugin-transform-unicode-regex@^7.24.1 + @babel/plugin-transform-unicode-sets-regex@^7.24.1 + @babel/preset-modules@0.1.6-no-external-plugins + babel-plugin-polyfill-corejs2@^0.4.10 + babel-plugin-polyfill-corejs3@^0.10.4 + babel-plugin-polyfill-regenerator@^0.6.1 + core-js-compat@^3.31.0 + semver@^6.3.1 + @babel/preset-modules + 0.1.6-no-external-plugins + Scope peer|@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0 + @babel/helper-plugin-utils@^7.0.0 + @babel/types@^7.4.4 + esutils@^2.0.2 + @babel/regjsgen + 0.8.0 + @babel/runtime + 7.24.5 + regenerator-runtime@^0.14.0 + @babel/template + 7.1.2 + @babel/code-frame@^7.0.0 + @babel/parser@^7.1.2 + @babel/types@^7.1.2 + 7.6.0 + @babel/code-frame@^7.0.0 + @babel/parser@^7.6.0 + @babel/types@^7.6.0 + 7.24.0 + @babel/code-frame@^7.23.5 + @babel/parser@^7.24.0 + @babel/types@^7.24.0 + @babel/traverse + 7.6.0 + @babel/code-frame@^7.5.5 + @babel/generator@^7.6.0 + @babel/helper-function-name@^7.1.0 + @babel/helper-split-export-declaration@^7.4.4 + @babel/parser@^7.6.0 + @babel/types@^7.6.0 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.13 + 7.6.2 + @babel/code-frame@^7.5.5 + @babel/generator@^7.6.2 + @babel/helper-function-name@^7.1.0 + @babel/helper-split-export-declaration@^7.4.4 + @babel/parser@^7.6.2 + @babel/types@^7.6.0 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.13 + 7.6.3 + @babel/code-frame@^7.5.5 + @babel/generator@^7.6.3 + @babel/helper-function-name@^7.1.0 + @babel/helper-split-export-declaration@^7.4.4 + @babel/parser@^7.6.3 + @babel/types@^7.6.3 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.13 + 7.7.0 + @babel/code-frame@^7.5.5 + @babel/generator@^7.7.0 + @babel/helper-function-name@^7.7.0 + @babel/helper-split-export-declaration@^7.7.0 + @babel/parser@^7.7.0 + @babel/types@^7.7.0 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.13 + 7.7.2 + @babel/code-frame@^7.5.5 + @babel/generator@^7.7.2 + @babel/helper-function-name@^7.7.0 + @babel/helper-split-export-declaration@^7.7.0 + @babel/parser@^7.7.2 + @babel/types@^7.7.2 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.13 + 7.7.4 + @babel/code-frame@^7.5.5 + @babel/generator@^7.7.4 + @babel/helper-function-name@^7.7.4 + @babel/helper-split-export-declaration@^7.7.4 + @babel/parser@^7.7.4 + @babel/types@^7.7.4 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.13 + 7.8.0 + @babel/code-frame@^7.8.0 + @babel/generator@^7.8.0 + @babel/helper-function-name@^7.8.0 + @babel/helper-split-export-declaration@^7.8.0 + @babel/parser@^7.8.0 + @babel/types@^7.8.0 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.13 + 7.8.3 + @babel/code-frame@^7.8.3 + @babel/generator@^7.8.3 + @babel/helper-function-name@^7.8.3 + @babel/helper-split-export-declaration@^7.8.3 + @babel/parser@^7.8.3 + @babel/types@^7.8.3 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.13 + 7.8.4 + @babel/code-frame@^7.8.3 + @babel/generator@^7.8.4 + @babel/helper-function-name@^7.8.3 + @babel/helper-split-export-declaration@^7.8.3 + @babel/parser@^7.8.4 + @babel/types@^7.8.3 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.13 + 7.8.6 + @babel/code-frame@^7.8.3 + @babel/generator@^7.8.6 + @babel/helper-function-name@^7.8.3 + @babel/helper-split-export-declaration@^7.8.3 + @babel/parser@^7.8.6 + @babel/types@^7.8.6 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.13 + 7.9.0 + @babel/code-frame@^7.8.3 + @babel/generator@^7.9.0 + @babel/helper-function-name@^7.8.3 + @babel/helper-split-export-declaration@^7.8.3 + @babel/parser@^7.9.0 + @babel/types@^7.9.0 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.13 + 7.9.5 + @babel/code-frame@^7.8.3 + @babel/generator@^7.9.5 + @babel/helper-function-name@^7.9.5 + @babel/helper-split-export-declaration@^7.8.3 + @babel/parser@^7.9.0 + @babel/types@^7.9.5 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.13 + 7.9.6 + @babel/code-frame@^7.8.3 + @babel/generator@^7.9.6 + @babel/helper-function-name@^7.9.5 + @babel/helper-split-export-declaration@^7.8.3 + @babel/parser@^7.9.6 + @babel/types@^7.9.6 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.13 + 7.10.0 + @babel/code-frame@^7.8.3 + @babel/generator@^7.10.0 + @babel/helper-function-name@^7.9.5 + @babel/helper-split-export-declaration@^7.8.3 + @babel/parser@^7.10.0 + @babel/types@^7.10.0 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.13 + 7.10.1 + @babel/code-frame@^7.10.1 + @babel/generator@^7.10.1 + @babel/helper-function-name@^7.10.1 + @babel/helper-split-export-declaration@^7.10.1 + @babel/parser@^7.10.1 + @babel/types@^7.10.1 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.13 + 7.10.3 + @babel/code-frame@^7.10.3 + @babel/generator@^7.10.3 + @babel/helper-function-name@^7.10.3 + @babel/helper-split-export-declaration@^7.10.1 + @babel/parser@^7.10.3 + @babel/types@^7.10.3 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.13 + 7.10.4 + @babel/code-frame@^7.10.4 + @babel/generator@^7.10.4 + @babel/helper-function-name@^7.10.4 + @babel/helper-split-export-declaration@^7.10.4 + @babel/parser@^7.10.4 + @babel/types@^7.10.4 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.13 + 7.10.5 + @babel/code-frame@^7.10.4 + @babel/generator@^7.10.5 + @babel/helper-function-name@^7.10.4 + @babel/helper-split-export-declaration@^7.10.4 + @babel/parser@^7.10.5 + @babel/types@^7.10.5 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.19 + 7.11.0 + @babel/code-frame@^7.10.4 + @babel/generator@^7.11.0 + @babel/helper-function-name@^7.10.4 + @babel/helper-split-export-declaration@^7.11.0 + @babel/parser@^7.11.0 + @babel/types@^7.11.0 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.19 + 7.11.5 + @babel/code-frame@^7.10.4 + @babel/generator@^7.11.5 + @babel/helper-function-name@^7.10.4 + @babel/helper-split-export-declaration@^7.11.0 + @babel/parser@^7.11.5 + @babel/types@^7.11.5 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.19 + 7.12.0 + @babel/code-frame@^7.10.4 + @babel/generator@^7.12.0 + @babel/helper-function-name@^7.10.4 + @babel/helper-split-export-declaration@^7.11.0 + @babel/parser@^7.12.0 + @babel/types@^7.12.0 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.19 + 7.12.1 + @babel/code-frame@^7.10.4 + @babel/generator@^7.12.1 + @babel/helper-function-name@^7.10.4 + @babel/helper-split-export-declaration@^7.11.0 + @babel/parser@^7.12.1 + @babel/types@^7.12.1 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.19 + 7.12.5 + @babel/code-frame@^7.10.4 + @babel/generator@^7.12.5 + @babel/helper-function-name@^7.10.4 + @babel/helper-split-export-declaration@^7.11.0 + @babel/parser@^7.12.5 + @babel/types@^7.12.5 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.19 + 7.12.7 + @babel/code-frame@^7.10.4 + @babel/generator@^7.12.5 + @babel/helper-function-name@^7.10.4 + @babel/helper-split-export-declaration@^7.11.0 + @babel/parser@^7.12.7 + @babel/types@^7.12.7 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.19 + 7.12.8 + @babel/code-frame@^7.10.4 + @babel/generator@^7.12.5 + @babel/helper-function-name@^7.10.4 + @babel/helper-split-export-declaration@^7.11.0 + @babel/parser@^7.12.7 + @babel/types@^7.12.7 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.19 + 7.12.9 + @babel/code-frame@^7.10.4 + @babel/generator@^7.12.5 + @babel/helper-function-name@^7.10.4 + @babel/helper-split-export-declaration@^7.11.0 + @babel/parser@^7.12.7 + @babel/types@^7.12.7 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.19 + 7.12.10 + @babel/code-frame@^7.10.4 + @babel/generator@^7.12.10 + @babel/helper-function-name@^7.10.4 + @babel/helper-split-export-declaration@^7.11.0 + @babel/parser@^7.12.10 + @babel/types@^7.12.10 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.19 + 7.12.12 + @babel/code-frame@^7.12.11 + @babel/generator@^7.12.11 + @babel/helper-function-name@^7.12.11 + @babel/helper-split-export-declaration@^7.12.11 + @babel/parser@^7.12.11 + @babel/types@^7.12.12 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.19 + 7.12.13 + @babel/code-frame@^7.12.13 + @babel/generator@^7.12.13 + @babel/helper-function-name@^7.12.13 + @babel/helper-split-export-declaration@^7.12.13 + @babel/parser@^7.12.13 + @babel/types@^7.12.13 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.19 + 7.12.17 + @babel/code-frame@^7.12.13 + @babel/generator@^7.12.17 + @babel/helper-function-name@^7.12.13 + @babel/helper-split-export-declaration@^7.12.13 + @babel/parser@^7.12.17 + @babel/types@^7.12.17 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.19 + 7.13.0 + @babel/code-frame@^7.12.13 + @babel/generator@^7.13.0 + @babel/helper-function-name@^7.12.13 + @babel/helper-split-export-declaration@^7.12.13 + @babel/parser@^7.13.0 + @babel/types@^7.13.0 + debug@^4.1.0 + globals@^11.1.0 + lodash@^4.17.19 + 7.13.13 + @babel/code-frame@^7.12.13 + @babel/generator@^7.13.9 + @babel/helper-function-name@^7.12.13 + @babel/helper-split-export-declaration@^7.12.13 + @babel/parser@^7.13.13 + @babel/types@^7.13.13 + debug@^4.1.0 + globals@^11.1.0 + 7.13.15 + @babel/code-frame@^7.12.13 + @babel/generator@^7.13.9 + @babel/helper-function-name@^7.12.13 + @babel/helper-split-export-declaration@^7.12.13 + @babel/parser@^7.13.15 + @babel/types@^7.13.14 + debug@^4.1.0 + globals@^11.1.0 + 7.13.17 + @babel/code-frame@^7.12.13 + @babel/generator@^7.13.16 + @babel/helper-function-name@^7.12.13 + @babel/helper-split-export-declaration@^7.12.13 + @babel/parser@^7.13.16 + @babel/types@^7.13.17 + debug@^4.1.0 + globals@^11.1.0 + 7.14.0 + @babel/code-frame@^7.12.13 + @babel/generator@^7.14.0 + @babel/helper-function-name@^7.12.13 + @babel/helper-split-export-declaration@^7.12.13 + @babel/parser@^7.14.0 + @babel/types@^7.14.0 + debug@^4.1.0 + globals@^11.1.0 + 7.14.2 + @babel/code-frame@^7.12.13 + @babel/generator@^7.14.2 + @babel/helper-function-name@^7.14.2 + @babel/helper-split-export-declaration@^7.12.13 + @babel/parser@^7.14.2 + @babel/types@^7.14.2 + debug@^4.1.0 + globals@^11.1.0 + 7.14.5 + @babel/code-frame@^7.14.5 + @babel/generator@^7.14.5 + @babel/helper-function-name@^7.14.5 + @babel/helper-hoist-variables@^7.14.5 + @babel/helper-split-export-declaration@^7.14.5 + @babel/parser@^7.14.5 + @babel/types@^7.14.5 + debug@^4.1.0 + globals@^11.1.0 + 7.14.7 + @babel/code-frame@^7.14.5 + @babel/generator@^7.14.5 + @babel/helper-function-name@^7.14.5 + @babel/helper-hoist-variables@^7.14.5 + @babel/helper-split-export-declaration@^7.14.5 + @babel/parser@^7.14.7 + @babel/types@^7.14.5 + debug@^4.1.0 + globals@^11.1.0 + 7.14.8 + @babel/code-frame@^7.14.5 + @babel/generator@^7.14.8 + @babel/helper-function-name@^7.14.5 + @babel/helper-hoist-variables@^7.14.5 + @babel/helper-split-export-declaration@^7.14.5 + @babel/parser@^7.14.8 + @babel/types@^7.14.8 + debug@^4.1.0 + globals@^11.1.0 + 7.14.9 + @babel/code-frame@^7.14.5 + @babel/generator@^7.14.9 + @babel/helper-function-name@^7.14.5 + @babel/helper-hoist-variables@^7.14.5 + @babel/helper-split-export-declaration@^7.14.5 + @babel/parser@^7.14.9 + @babel/types@^7.14.9 + debug@^4.1.0 + globals@^11.1.0 + 7.15.0 + @babel/code-frame@^7.14.5 + @babel/generator@^7.15.0 + @babel/helper-function-name@^7.14.5 + @babel/helper-hoist-variables@^7.14.5 + @babel/helper-split-export-declaration@^7.14.5 + @babel/parser@^7.15.0 + @babel/types@^7.15.0 + debug@^4.1.0 + globals@^11.1.0 + 7.15.4 + @babel/code-frame@^7.14.5 + @babel/generator@^7.15.4 + @babel/helper-function-name@^7.15.4 + @babel/helper-hoist-variables@^7.15.4 + @babel/helper-split-export-declaration@^7.15.4 + @babel/parser@^7.15.4 + @babel/types@^7.15.4 + debug@^4.1.0 + globals@^11.1.0 + 7.16.0 + @babel/code-frame@^7.16.0 + @babel/generator@^7.16.0 + @babel/helper-function-name@^7.16.0 + @babel/helper-hoist-variables@^7.16.0 + @babel/helper-split-export-declaration@^7.16.0 + @babel/parser@^7.16.0 + @babel/types@^7.16.0 + debug@^4.1.0 + globals@^11.1.0 + 7.16.3 + @babel/code-frame@^7.16.0 + @babel/generator@^7.16.0 + @babel/helper-function-name@^7.16.0 + @babel/helper-hoist-variables@^7.16.0 + @babel/helper-split-export-declaration@^7.16.0 + @babel/parser@^7.16.3 + @babel/types@^7.16.0 + debug@^4.1.0 + globals@^11.1.0 + 7.16.5 + @babel/code-frame@^7.16.0 + @babel/generator@^7.16.5 + @babel/helper-environment-visitor@^7.16.5 + @babel/helper-function-name@^7.16.0 + @babel/helper-hoist-variables@^7.16.0 + @babel/helper-split-export-declaration@^7.16.0 + @babel/parser@^7.16.5 + @babel/types@^7.16.0 + debug@^4.1.0 + globals@^11.1.0 + 7.16.7 + @babel/code-frame@^7.16.7 + @babel/generator@^7.16.7 + @babel/helper-environment-visitor@^7.16.7 + @babel/helper-function-name@^7.16.7 + @babel/helper-hoist-variables@^7.16.7 + @babel/helper-split-export-declaration@^7.16.7 + @babel/parser@^7.16.7 + @babel/types@^7.16.7 + debug@^4.1.0 + globals@^11.1.0 + 7.16.8 + @babel/code-frame@^7.16.7 + @babel/generator@^7.16.8 + @babel/helper-environment-visitor@^7.16.7 + @babel/helper-function-name@^7.16.7 + @babel/helper-hoist-variables@^7.16.7 + @babel/helper-split-export-declaration@^7.16.7 + @babel/parser@^7.16.8 + @babel/types@^7.16.8 + debug@^4.1.0 + globals@^11.1.0 + 7.16.10 + @babel/code-frame@^7.16.7 + @babel/generator@^7.16.8 + @babel/helper-environment-visitor@^7.16.7 + @babel/helper-function-name@^7.16.7 + @babel/helper-hoist-variables@^7.16.7 + @babel/helper-split-export-declaration@^7.16.7 + @babel/parser@^7.16.10 + @babel/types@^7.16.8 + debug@^4.1.0 + globals@^11.1.0 + 7.17.0 + @babel/code-frame@^7.16.7 + @babel/generator@^7.17.0 + @babel/helper-environment-visitor@^7.16.7 + @babel/helper-function-name@^7.16.7 + @babel/helper-hoist-variables@^7.16.7 + @babel/helper-split-export-declaration@^7.16.7 + @babel/parser@^7.17.0 + @babel/types@^7.17.0 + debug@^4.1.0 + globals@^11.1.0 + 7.17.3 + @babel/code-frame@^7.16.7 + @babel/generator@^7.17.3 + @babel/helper-environment-visitor@^7.16.7 + @babel/helper-function-name@^7.16.7 + @babel/helper-hoist-variables@^7.16.7 + @babel/helper-split-export-declaration@^7.16.7 + @babel/parser@^7.17.3 + @babel/types@^7.17.0 + debug@^4.1.0 + globals@^11.1.0 + 7.17.9 + @babel/code-frame@^7.16.7 + @babel/generator@^7.17.9 + @babel/helper-environment-visitor@^7.16.7 + @babel/helper-function-name@^7.17.9 + @babel/helper-hoist-variables@^7.16.7 + @babel/helper-split-export-declaration@^7.16.7 + @babel/parser@^7.17.9 + @babel/types@^7.17.0 + debug@^4.1.0 + globals@^11.1.0 + 7.17.10 + @babel/code-frame@^7.16.7 + @babel/generator@^7.17.10 + @babel/helper-environment-visitor@^7.16.7 + @babel/helper-function-name@^7.17.9 + @babel/helper-hoist-variables@^7.16.7 + @babel/helper-split-export-declaration@^7.16.7 + @babel/parser@^7.17.10 + @babel/types@^7.17.10 + debug@^4.1.0 + globals@^11.1.0 + 7.17.12 + @babel/code-frame@^7.16.7 + @babel/generator@^7.17.12 + @babel/helper-environment-visitor@^7.16.7 + @babel/helper-function-name@^7.17.9 + @babel/helper-hoist-variables@^7.16.7 + @babel/helper-split-export-declaration@^7.16.7 + @babel/parser@^7.17.12 + @babel/types@^7.17.12 + debug@^4.1.0 + globals@^11.1.0 + 7.18.0 + @babel/code-frame@^7.16.7 + @babel/generator@^7.18.0 + @babel/helper-environment-visitor@^7.16.7 + @babel/helper-function-name@^7.17.9 + @babel/helper-hoist-variables@^7.16.7 + @babel/helper-split-export-declaration@^7.16.7 + @babel/parser@^7.18.0 + @babel/types@^7.18.0 + debug@^4.1.0 + globals@^11.1.0 + 7.18.2 + @babel/code-frame@^7.16.7 + @babel/generator@^7.18.2 + @babel/helper-environment-visitor@^7.18.2 + @babel/helper-function-name@^7.17.9 + @babel/helper-hoist-variables@^7.16.7 + @babel/helper-split-export-declaration@^7.16.7 + @babel/parser@^7.18.0 + @babel/types@^7.18.2 + debug@^4.1.0 + globals@^11.1.0 + 7.18.5 + @babel/code-frame@^7.16.7 + @babel/generator@^7.18.2 + @babel/helper-environment-visitor@^7.18.2 + @babel/helper-function-name@^7.17.9 + @babel/helper-hoist-variables@^7.16.7 + @babel/helper-split-export-declaration@^7.16.7 + @babel/parser@^7.18.5 + @babel/types@^7.18.4 + debug@^4.1.0 + globals@^11.1.0 + 7.18.6 + @babel/code-frame@^7.18.6 + @babel/generator@^7.18.6 + @babel/helper-environment-visitor@^7.18.6 + @babel/helper-function-name@^7.18.6 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.18.6 + @babel/types@^7.18.6 + debug@^4.1.0 + globals@^11.1.0 + 7.18.8 + @babel/code-frame@^7.18.6 + @babel/generator@^7.18.7 + @babel/helper-environment-visitor@^7.18.6 + @babel/helper-function-name@^7.18.6 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.18.8 + @babel/types@^7.18.8 + debug@^4.1.0 + globals@^11.1.0 + 7.18.9 + @babel/code-frame@^7.18.6 + @babel/generator@^7.18.9 + @babel/helper-environment-visitor@^7.18.9 + @babel/helper-function-name@^7.18.9 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.18.9 + @babel/types@^7.18.9 + debug@^4.1.0 + globals@^11.1.0 + 7.18.10 + @babel/code-frame@^7.18.6 + @babel/generator@^7.18.10 + @babel/helper-environment-visitor@^7.18.9 + @babel/helper-function-name@^7.18.9 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.18.10 + @babel/types@^7.18.10 + debug@^4.1.0 + globals@^11.1.0 + 7.18.11 + @babel/code-frame@^7.18.6 + @babel/generator@^7.18.10 + @babel/helper-environment-visitor@^7.18.9 + @babel/helper-function-name@^7.18.9 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.18.11 + @babel/types@^7.18.10 + debug@^4.1.0 + globals@^11.1.0 + 7.18.13 + @babel/code-frame@^7.18.6 + @babel/generator@^7.18.13 + @babel/helper-environment-visitor@^7.18.9 + @babel/helper-function-name@^7.18.9 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.18.13 + @babel/types@^7.18.13 + debug@^4.1.0 + globals@^11.1.0 + 7.19.0 + @babel/code-frame@^7.18.6 + @babel/generator@^7.19.0 + @babel/helper-environment-visitor@^7.18.9 + @babel/helper-function-name@^7.19.0 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.19.0 + @babel/types@^7.19.0 + debug@^4.1.0 + globals@^11.1.0 + 7.19.1 + @babel/code-frame@^7.18.6 + @babel/generator@^7.19.0 + @babel/helper-environment-visitor@^7.18.9 + @babel/helper-function-name@^7.19.0 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.19.1 + @babel/types@^7.19.0 + debug@^4.1.0 + globals@^11.1.0 + 7.19.3 + @babel/code-frame@^7.18.6 + @babel/generator@^7.19.3 + @babel/helper-environment-visitor@^7.18.9 + @babel/helper-function-name@^7.19.0 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.19.3 + @babel/types@^7.19.3 + debug@^4.1.0 + globals@^11.1.0 + 7.19.4 + @babel/code-frame@^7.18.6 + @babel/generator@^7.19.4 + @babel/helper-environment-visitor@^7.18.9 + @babel/helper-function-name@^7.19.0 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.19.4 + @babel/types@^7.19.4 + debug@^4.1.0 + globals@^11.1.0 + 7.19.6 + @babel/code-frame@^7.18.6 + @babel/generator@^7.19.6 + @babel/helper-environment-visitor@^7.18.9 + @babel/helper-function-name@^7.19.0 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.19.6 + @babel/types@^7.19.4 + debug@^4.1.0 + globals@^11.1.0 + 7.20.0 + @babel/code-frame@^7.18.6 + @babel/generator@^7.20.0 + @babel/helper-environment-visitor@^7.18.9 + @babel/helper-function-name@^7.19.0 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.20.0 + @babel/types@^7.20.0 + debug@^4.1.0 + globals@^11.1.0 + 7.20.1 + @babel/code-frame@^7.18.6 + @babel/generator@^7.20.1 + @babel/helper-environment-visitor@^7.18.9 + @babel/helper-function-name@^7.19.0 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.20.1 + @babel/types@^7.20.0 + debug@^4.1.0 + globals@^11.1.0 + 7.20.5 + @babel/code-frame@^7.18.6 + @babel/generator@^7.20.5 + @babel/helper-environment-visitor@^7.18.9 + @babel/helper-function-name@^7.19.0 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.20.5 + @babel/types@^7.20.5 + debug@^4.1.0 + globals@^11.1.0 + 7.20.7 + @babel/code-frame@^7.18.6 + @babel/generator@^7.20.7 + @babel/helper-environment-visitor@^7.18.9 + @babel/helper-function-name@^7.19.0 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.20.7 + @babel/types@^7.20.7 + debug@^4.1.0 + globals@^11.1.0 + 7.20.8 + @babel/code-frame@^7.18.6 + @babel/generator@^7.20.7 + @babel/helper-environment-visitor@^7.18.9 + @babel/helper-function-name@^7.19.0 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.20.7 + @babel/types@^7.20.7 + debug@^4.1.0 + globals@^11.1.0 + 7.20.10 + @babel/code-frame@^7.18.6 + @babel/generator@^7.20.7 + @babel/helper-environment-visitor@^7.18.9 + @babel/helper-function-name@^7.19.0 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.20.7 + @babel/types@^7.20.7 + debug@^4.1.0 + globals@^11.1.0 + 7.20.12 + @babel/code-frame@^7.18.6 + @babel/generator@^7.20.7 + @babel/helper-environment-visitor@^7.18.9 + @babel/helper-function-name@^7.19.0 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.20.7 + @babel/types@^7.20.7 + debug@^4.1.0 + globals@^11.1.0 + 7.20.13 + @babel/code-frame@^7.18.6 + @babel/generator@^7.20.7 + @babel/helper-environment-visitor@^7.18.9 + @babel/helper-function-name@^7.19.0 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.20.13 + @babel/types@^7.20.7 + debug@^4.1.0 + globals@^11.1.0 + 7.21.0 + @babel/code-frame@^7.18.6 + @babel/generator@^7.21.0 + @babel/helper-environment-visitor@^7.18.9 + @babel/helper-function-name@^7.21.0 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.21.0 + @babel/types@^7.21.0 + debug@^4.1.0 + globals@^11.1.0 + 7.21.2 + @babel/code-frame@^7.18.6 + @babel/generator@^7.21.1 + @babel/helper-environment-visitor@^7.18.9 + @babel/helper-function-name@^7.21.0 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.21.2 + @babel/types@^7.21.2 + debug@^4.1.0 + globals@^11.1.0 + 7.21.3 + @babel/code-frame@^7.18.6 + @babel/generator@^7.21.3 + @babel/helper-environment-visitor@^7.18.9 + @babel/helper-function-name@^7.21.0 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.21.3 + @babel/types@^7.21.3 + debug@^4.1.0 + globals@^11.1.0 + 7.21.4 + @babel/code-frame@^7.21.4 + @babel/generator@^7.21.4 + @babel/helper-environment-visitor@^7.18.9 + @babel/helper-function-name@^7.21.0 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.21.4 + @babel/types@^7.21.4 + debug@^4.1.0 + globals@^11.1.0 + 7.21.5 + @babel/code-frame@^7.21.4 + @babel/generator@^7.21.5 + @babel/helper-environment-visitor@^7.21.5 + @babel/helper-function-name@^7.21.0 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.21.5 + @babel/types@^7.21.5 + debug@^4.1.0 + globals@^11.1.0 + 7.22.0 + @babel/code-frame@^7.21.4 + @babel/generator@^7.22.0 + @babel/helper-environment-visitor@^7.21.5 + @babel/helper-function-name@^7.21.0 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.22.0 + @babel/types@^7.22.0 + debug@^4.1.0 + globals@^11.1.0 + 7.22.1 + @babel/code-frame@^7.21.4 + @babel/generator@^7.22.0 + @babel/helper-environment-visitor@^7.22.1 + @babel/helper-function-name@^7.21.0 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.22.0 + @babel/types@^7.22.0 + debug@^4.1.0 + globals@^11.1.0 + 7.22.4 + @babel/code-frame@^7.21.4 + @babel/generator@^7.22.3 + @babel/helper-environment-visitor@^7.22.1 + @babel/helper-function-name@^7.21.0 + @babel/helper-hoist-variables@^7.18.6 + @babel/helper-split-export-declaration@^7.18.6 + @babel/parser@^7.22.4 + @babel/types@^7.22.4 + debug@^4.1.0 + globals@^11.1.0 + 7.22.5 + @babel/code-frame@^7.22.5 + @babel/generator@^7.22.5 + @babel/helper-environment-visitor@^7.22.5 + @babel/helper-function-name@^7.22.5 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-split-export-declaration@^7.22.5 + @babel/parser@^7.22.5 + @babel/types@^7.22.5 + debug@^4.1.0 + globals@^11.1.0 + 7.22.6 + @babel/code-frame@^7.22.5 + @babel/generator@^7.22.5 + @babel/helper-environment-visitor@^7.22.5 + @babel/helper-function-name@^7.22.5 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-split-export-declaration@^7.22.6 + @babel/parser@^7.22.6 + @babel/types@^7.22.5 + debug@^4.1.0 + globals@^11.1.0 + 7.22.7 + @babel/code-frame@^7.22.5 + @babel/generator@^7.22.7 + @babel/helper-environment-visitor@^7.22.5 + @babel/helper-function-name@^7.22.5 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-split-export-declaration@^7.22.6 + @babel/parser@^7.22.7 + @babel/types@^7.22.5 + debug@^4.1.0 + globals@^11.1.0 + 7.22.8 + @babel/code-frame@^7.22.5 + @babel/generator@^7.22.7 + @babel/helper-environment-visitor@^7.22.5 + @babel/helper-function-name@^7.22.5 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-split-export-declaration@^7.22.6 + @babel/parser@^7.22.7 + @babel/types@^7.22.5 + debug@^4.1.0 + globals@^11.1.0 + 7.22.10 + @babel/code-frame@^7.22.10 + @babel/generator@^7.22.10 + @babel/helper-environment-visitor@^7.22.5 + @babel/helper-function-name@^7.22.5 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-split-export-declaration@^7.22.6 + @babel/parser@^7.22.10 + @babel/types@^7.22.10 + debug@^4.1.0 + globals@^11.1.0 + 7.22.11 + @babel/code-frame@^7.22.10 + @babel/generator@^7.22.10 + @babel/helper-environment-visitor@^7.22.5 + @babel/helper-function-name@^7.22.5 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-split-export-declaration@^7.22.6 + @babel/parser@^7.22.11 + @babel/types@^7.22.11 + debug@^4.1.0 + globals@^11.1.0 + 7.22.15 + @babel/code-frame@^7.22.13 + @babel/generator@^7.22.15 + @babel/helper-environment-visitor@^7.22.5 + @babel/helper-function-name@^7.22.5 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-split-export-declaration@^7.22.6 + @babel/parser@^7.22.15 + @babel/types@^7.22.15 + debug@^4.1.0 + globals@^11.1.0 + 7.22.17 + @babel/code-frame@^7.22.13 + @babel/generator@^7.22.15 + @babel/helper-environment-visitor@^7.22.5 + @babel/helper-function-name@^7.22.5 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-split-export-declaration@^7.22.6 + @babel/parser@^7.22.16 + @babel/types@^7.22.17 + debug@^4.1.0 + globals@^11.1.0 + 7.22.18 + @babel/code-frame@^7.22.13 + @babel/generator@^7.22.15 + @babel/helper-environment-visitor@^7.22.5 + @babel/helper-function-name@^7.22.5 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-split-export-declaration@^7.22.6 + @babel/parser@^7.22.16 + @babel/types@^7.22.18 + debug@^4.1.0 + globals@^11.1.0 + 7.22.19 + @babel/code-frame@^7.22.13 + @babel/generator@^7.22.15 + @babel/helper-environment-visitor@^7.22.5 + @babel/helper-function-name@^7.22.5 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-split-export-declaration@^7.22.6 + @babel/parser@^7.22.16 + @babel/types@^7.22.19 + debug@^4.1.0 + globals@^11.1.0 + 7.22.20 + @babel/code-frame@^7.22.13 + @babel/generator@^7.22.15 + @babel/helper-environment-visitor@^7.22.20 + @babel/helper-function-name@^7.22.5 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-split-export-declaration@^7.22.6 + @babel/parser@^7.22.16 + @babel/types@^7.22.19 + debug@^4.1.0 + globals@^11.1.0 + 7.23.0 + @babel/code-frame@^7.22.13 + @babel/generator@^7.23.0 + @babel/helper-environment-visitor@^7.22.20 + @babel/helper-function-name@^7.23.0 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-split-export-declaration@^7.22.6 + @babel/parser@^7.23.0 + @babel/types@^7.23.0 + debug@^4.1.0 + globals@^11.1.0 + 7.23.2 + @babel/code-frame@^7.22.13 + @babel/generator@^7.23.0 + @babel/helper-environment-visitor@^7.22.20 + @babel/helper-function-name@^7.23.0 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-split-export-declaration@^7.22.6 + @babel/parser@^7.23.0 + @babel/types@^7.23.0 + debug@^4.1.0 + globals@^11.1.0 + 7.23.3 + @babel/code-frame@^7.22.13 + @babel/generator@^7.23.3 + @babel/helper-environment-visitor@^7.22.20 + @babel/helper-function-name@^7.23.0 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-split-export-declaration@^7.22.6 + @babel/parser@^7.23.3 + @babel/types@^7.23.3 + debug@^4.1.0 + globals@^11.1.0 + 7.23.4 + @babel/code-frame@^7.23.4 + @babel/generator@^7.23.4 + @babel/helper-environment-visitor@^7.22.20 + @babel/helper-function-name@^7.23.0 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-split-export-declaration@^7.22.6 + @babel/parser@^7.23.4 + @babel/types@^7.23.4 + debug@^4.1.0 + globals@^11.1.0 + 7.23.5 + @babel/code-frame@^7.23.5 + @babel/generator@^7.23.5 + @babel/helper-environment-visitor@^7.22.20 + @babel/helper-function-name@^7.23.0 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-split-export-declaration@^7.22.6 + @babel/parser@^7.23.5 + @babel/types@^7.23.5 + debug@^4.1.0 + globals@^11.1.0 + 7.23.6 + @babel/code-frame@^7.23.5 + @babel/generator@^7.23.6 + @babel/helper-environment-visitor@^7.22.20 + @babel/helper-function-name@^7.23.0 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-split-export-declaration@^7.22.6 + @babel/parser@^7.23.6 + @babel/types@^7.23.6 + debug@^4.3.1 + globals@^11.1.0 + 7.23.7 + @babel/code-frame@^7.23.5 + @babel/generator@^7.23.6 + @babel/helper-environment-visitor@^7.22.20 + @babel/helper-function-name@^7.23.0 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-split-export-declaration@^7.22.6 + @babel/parser@^7.23.6 + @babel/types@^7.23.6 + debug@^4.3.1 + globals@^11.1.0 + 7.23.9 + @babel/code-frame@^7.23.5 + @babel/generator@^7.23.6 + @babel/helper-environment-visitor@^7.22.20 + @babel/helper-function-name@^7.23.0 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-split-export-declaration@^7.22.6 + @babel/parser@^7.23.9 + @babel/types@^7.23.9 + debug@^4.3.1 + globals@^11.1.0 + 7.24.0 + @babel/code-frame@^7.23.5 + @babel/generator@^7.23.6 + @babel/helper-environment-visitor@^7.22.20 + @babel/helper-function-name@^7.23.0 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-split-export-declaration@^7.22.6 + @babel/parser@^7.24.0 + @babel/types@^7.24.0 + debug@^4.3.1 + globals@^11.1.0 + 7.24.1 + @babel/code-frame@^7.24.1 + @babel/generator@^7.24.1 + @babel/helper-environment-visitor@^7.22.20 + @babel/helper-function-name@^7.23.0 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-split-export-declaration@^7.22.6 + @babel/parser@^7.24.1 + @babel/types@^7.24.0 + debug@^4.3.1 + globals@^11.1.0 + 7.24.5 + @babel/code-frame@^7.24.2 + @babel/generator@^7.24.5 + @babel/helper-environment-visitor@^7.22.20 + @babel/helper-function-name@^7.23.0 + @babel/helper-hoist-variables@^7.22.5 + @babel/helper-split-export-declaration@^7.24.5 + @babel/parser@^7.24.5 + @babel/types@^7.24.5 + debug@^4.3.1 + globals@^11.1.0 + @babel/types + 7.1.2 + esutils@^2.0.2 + lodash@^4.17.10 + to-fast-properties@^2.0.0 + 7.6.1 + esutils@^2.0.2 + lodash@^4.17.13 + to-fast-properties@^2.0.0 + 7.24.5 + @babel/helper-string-parser@^7.24.1 + @babel/helper-validator-identifier@^7.24.5 + to-fast-properties@^2.0.0 + @firebase/analytics + 0.6.18 + @firebase/analytics-types@0.6.0 + Scope peer|@firebase/app@0.x + Scope peer|@firebase/app-types@0.x + @firebase/component@0.5.6 + @firebase/installations@0.4.32 + @firebase/logger@0.2.6 + @firebase/util@1.3.0 + tslib@^2.1.0 + @firebase/analytics-types + 0.6.0 + @firebase/app + 0.6.30 + @firebase/app-types@0.6.3 + @firebase/component@0.5.6 + @firebase/logger@0.2.6 + @firebase/util@1.3.0 + dom-storage@2.1.0 + tslib@^2.1.0 + xmlhttprequest@1.8.0 + @firebase/app-check + 0.3.2 + Scope peer|@firebase/app@0.x + @firebase/app-check-interop-types@0.1.0 + @firebase/app-check-types@0.3.1 + Scope peer|@firebase/app-types@0.x + @firebase/component@0.5.6 + @firebase/logger@0.2.6 + @firebase/util@1.3.0 + tslib@^2.1.0 + @firebase/app-check-interop-types + 0.1.0 + @firebase/app-check-types + 0.3.1 + @firebase/app-types + 0.6.3 + @firebase/auth + 0.16.8 + Scope peer|@firebase/app@0.x + @firebase/auth-types@0.10.3 + @firebase/auth-interop-types + 0.1.6 + Scope peer|@firebase/app-types@0.x + Scope peer|@firebase/util@1.x + @firebase/auth-types + 0.10.3 + Scope peer|@firebase/app-types@0.x + Scope peer|@firebase/util@1.x + @firebase/component + 0.5.6 + @firebase/util@1.3.0 + tslib@^2.1.0 + @firebase/database + 0.11.0 + @firebase/auth-interop-types@0.1.6 + @firebase/component@0.5.6 + @firebase/database-types@0.8.0 + @firebase/logger@0.2.6 + @firebase/util@1.3.0 + faye-websocket@0.11.3 + tslib@^2.1.0 + @firebase/database-types + 0.8.0 + @firebase/app-types@0.6.3 + @firebase/util@1.3.0 + @firebase/firestore + 2.4.0 + Scope peer|@firebase/app@0.x + Scope peer|@firebase/app-types@0.x + @firebase/component@0.5.6 + @firebase/firestore-types@2.4.0 + @firebase/logger@0.2.6 + @firebase/util@1.3.0 + @firebase/webchannel-wrapper@0.5.1 + @grpc/grpc-js@^1.3.2 + @grpc/proto-loader@^0.6.0 + node-fetch@2.6.1 + tslib@^2.1.0 + 2.4.1 + Scope peer|@firebase/app@0.x + Scope peer|@firebase/app-types@0.x + @firebase/component@0.5.6 + @firebase/firestore-types@2.4.0 + @firebase/logger@0.2.6 + @firebase/util@1.3.0 + @firebase/webchannel-wrapper@0.5.1 + @grpc/grpc-js@^1.3.2 + @grpc/proto-loader@^0.6.0 + node-fetch@2.6.7 + tslib@^2.1.0 + @firebase/firestore-types + 2.4.0 + Scope peer|@firebase/app-types@0.x + Scope peer|@firebase/util@1.x + @firebase/functions + 0.6.15 + Scope peer|@firebase/app@0.x + Scope peer|@firebase/app-types@0.x + @firebase/component@0.5.6 + @firebase/functions-types@0.4.0 + @firebase/messaging-types@0.5.0 + node-fetch@2.6.1 + tslib@^2.1.0 + 0.6.16 + Scope peer|@firebase/app@0.x + Scope peer|@firebase/app-types@0.x + @firebase/component@0.5.6 + @firebase/functions-types@0.4.0 + @firebase/messaging-types@0.5.0 + node-fetch@2.6.7 + tslib@^2.1.0 + @firebase/functions-types + 0.4.0 + @firebase/installations + 0.4.32 + Scope peer|@firebase/app@0.x + Scope peer|@firebase/app-types@0.x + @firebase/component@0.5.6 + @firebase/installations-types@0.3.4 + @firebase/util@1.3.0 + idb@3.0.2 + tslib@^2.1.0 + @firebase/installations-types + 0.3.4 + Scope peer|@firebase/app-types@0.x + @firebase/logger + 0.2.6 + @firebase/messaging + 0.8.0 + Scope peer|@firebase/app@0.x + Scope peer|@firebase/app-types@0.x + @firebase/component@0.5.6 + @firebase/installations@0.4.32 + @firebase/messaging-types@0.5.0 + @firebase/util@1.3.0 + idb@3.0.2 + tslib@^2.1.0 + @firebase/messaging-types + 0.5.0 + Scope peer|@firebase/app-types@0.x + @firebase/performance + 0.4.18 + Scope peer|@firebase/app@0.x + Scope peer|@firebase/app-types@0.x + @firebase/component@0.5.6 + @firebase/installations@0.4.32 + @firebase/logger@0.2.6 + @firebase/performance-types@0.0.13 + @firebase/util@1.3.0 + tslib@^2.1.0 + @firebase/performance-types + 0.0.13 + @firebase/polyfill + 0.3.36 + core-js@3.6.5 + promise-polyfill@8.1.3 + whatwg-fetch@2.0.4 + @firebase/remote-config + 0.1.43 + Scope peer|@firebase/app@0.x + Scope peer|@firebase/app-types@0.x + @firebase/component@0.5.6 + @firebase/installations@0.4.32 + @firebase/logger@0.2.6 + @firebase/remote-config-types@0.1.9 + @firebase/util@1.3.0 + tslib@^2.1.0 + @firebase/remote-config-types + 0.1.9 + @firebase/storage + 0.7.0 + Scope peer|@firebase/app@0.x + Scope peer|@firebase/app-types@0.x + @firebase/component@0.5.6 + @firebase/storage-types@0.5.0 + @firebase/util@1.3.0 + node-fetch@2.6.1 + tslib@^2.1.0 + 0.7.1 + Scope peer|@firebase/app@0.x + Scope peer|@firebase/app-types@0.x + @firebase/component@0.5.6 + @firebase/storage-types@0.5.0 + @firebase/util@1.3.0 + node-fetch@2.6.7 + tslib@^2.1.0 + @firebase/storage-types + 0.5.0 + Scope peer|@firebase/app-types@0.x + Scope peer|@firebase/util@1.x + @firebase/util + 1.3.0 + tslib@^2.1.0 + @firebase/webchannel-wrapper + 0.5.1 + @google-cloud/cloudbuild + 2.6.0 + google-gax@^2.24.1 + 3.10.0 + google-gax@^3.5.8 + 4.4.0 + google-gax@^4.0.3 + @google-cloud/common + 3.8.0 + @google-cloud/projectify@^2.0.0 + @google-cloud/promisify@^2.0.0 + arrify@^2.0.1 + duplexify@^4.1.1 + ent@^2.2.0 + extend@^3.0.2 + google-auth-library@^7.9.2 + retry-request@^4.2.2 + teeny-request@^7.0.0 + 3.10.0 + @google-cloud/projectify@^2.0.0 + @google-cloud/promisify@^2.0.0 + arrify@^2.0.1 + duplexify@^4.1.1 + ent@^2.2.0 + extend@^3.0.2 + google-auth-library@^7.14.0 + retry-request@^4.2.2 + teeny-request@^7.0.0 + @google-cloud/error-reporting + 2.0.4 + @google-cloud/common@^3.0.0 + console-log-level@^1.4.1 + 2.0.5 + @google-cloud/common@^3.0.0 + console-log-level@^1.4.1 + @google-cloud/projectify + 2.1.1 + @google-cloud/promisify + 2.0.4 + @grpc/grpc-js + 1.4.2 + @grpc/proto-loader@^0.6.4 + @types/node@>=12.12.47 + 1.6.12 + @grpc/proto-loader@^0.7.0 + @types/node@>=12.12.47 + 1.8.21 + @grpc/proto-loader@^0.7.0 + @types/node@>=12.12.47 + 1.10.7 + @grpc/proto-loader@^0.7.13 + @js-sdsl/ordered-map@^4.4.2 + @grpc/proto-loader + 0.6.6 + @types/long@^4.0.1 + lodash.camelcase@^4.3.0 + long@^4.0.0 + protobufjs@^6.10.0 + yargs@^16.1.1 + 0.6.13 + @types/long@^4.0.1 + lodash.camelcase@^4.3.0 + long@^4.0.0 + protobufjs@^6.11.3 + yargs@^16.2.0 + 0.7.13 + lodash.camelcase@^4.3.0 + long@^5.0.0 + protobufjs@^7.2.5 + yargs@^17.7.2 + @jridgewell/gen-mapping + 0.3.5 + @jridgewell/set-array@^1.2.1 + @jridgewell/sourcemap-codec@^1.4.10 + @jridgewell/trace-mapping@^0.3.24 + @jridgewell/resolve-uri + 3.1.2 + @jridgewell/set-array + 1.2.1 + @jridgewell/sourcemap-codec + 1.4.15 + @jridgewell/trace-mapping + 0.3.25 + @jridgewell/resolve-uri@^3.1.0 + @jridgewell/sourcemap-codec@^1.4.14 + @js-sdsl/ordered-map + 4.4.2 + @jsdoc/salty + 0.2.8 + lodash@^4.17.21 + @polka/url + 0.5.0 + @protobufjs/aspromise + 1.1.2 + @protobufjs/base64 + 1.1.2 + @protobufjs/codegen + 2.0.4 + @protobufjs/eventemitter + 1.1.0 + @protobufjs/fetch + 1.1.0 + @protobufjs/aspromise@^1.1.1 + @protobufjs/inquire@^1.1.0 + @protobufjs/float + 1.0.2 + @protobufjs/inquire + 1.1.0 + @protobufjs/path + 1.1.2 + @protobufjs/pool + 1.1.0 + @protobufjs/utf8 + 1.1.0 + @rollup/plugin-commonjs + 21.0.1 + @rollup/pluginutils@^3.1.0 + commondir@^1.0.1 + estree-walker@^2.0.1 + glob@^7.1.6 + is-reference@^1.2.1 + magic-string@^0.25.7 + resolve@^1.17.0 + Scope peer|rollup@^2.38.3 + 21.1.0 + @rollup/pluginutils@^3.1.0 + commondir@^1.0.1 + estree-walker@^2.0.1 + glob@^7.1.6 + is-reference@^1.2.1 + magic-string@^0.25.7 + resolve@^1.17.0 + Scope peer|rollup@^2.38.3 + @rollup/plugin-node-resolve + 13.0.6 + @rollup/pluginutils@^3.1.0 + @types/resolve@1.17.1 + builtin-modules@^3.1.0 + deepmerge@^4.2.2 + is-module@^1.0.0 + resolve@^1.19.0 + Scope peer|rollup@^2.42.0 + 13.3.0 + @rollup/pluginutils@^3.1.0 + @types/resolve@1.17.1 + deepmerge@^4.2.2 + is-builtin-module@^3.1.0 + is-module@^1.0.0 + resolve@^1.19.0 + Scope peer|rollup@^2.42.0 + @rollup/pluginutils + 3.1.0 + @types/estree@0.0.39 + estree-walker@^1.0.1 + picomatch@^2.2.2 + Scope peer|rollup@^1.20.0||^2.0.0 + @tootallnate/once + 2.0.0 + @types/caseless + 0.12.5 + @types/estree + 0.0.39 + 1.0.5 + @types/glob + 8.1.0 + @types/minimatch@^5.1.2 + @types/node@* + @types/linkify-it + 5.0.0 + @types/long + 4.0.1 + 4.0.2 + @types/markdown-it + 14.1.1 + @types/linkify-it@^5 + @types/mdurl@^2 + @types/mdurl + 2.0.0 + @types/minimatch + 5.1.2 + @types/node + 12.6.9 + 16.11.6 + 20.12.8 + undici-types@~5.26.4 + 20.12.10 + undici-types@~5.26.4 + @types/request + 2.48.12 + @types/caseless@* + @types/node@* + @types/tough-cookie@* + form-data@^2.5.0 + @types/resolve + 1.17.1 + @types/node@* + @types/rimraf + 3.0.2 + @types/glob@* + @types/node@* + @types/tough-cookie + 4.0.5 + @ungap/promise-all-settled + 1.1.2 + @webcomponents/webcomponentsjs + 2.4.0 + 2.8.0 + abab + 2.0.0 + 2.0.6 + abort-controller + 3.0.0 + event-target-shim@^5.0.0 + acorn + 5.4.1 + 5.5.0 + 5.5.1 + 5.5.2 + 5.5.3 + 5.6.0 + 5.6.1 + 5.6.2 + 5.7.0 + 5.7.1 + 5.7.2 + 5.7.3 + 5.7.4 + 6.0.2 + 6.4.2 + 7.1.0 + 7.4.1 + 8.11.3 + acorn-es7-plugin + 1.1.7 + acorn-globals + 4.3.0 + acorn@^6.0.1 + acorn-walk@^6.0.1 + 4.3.4 + acorn@^6.0.1 + acorn-walk@^6.0.1 + acorn-jsx + 5.3.2 + Scope peer|acorn@^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-walk + 6.1.0 + 6.2.0 + agent-base + 4.3.0 + es6-promisify@^5.0.0 + 6.0.2 + debug@4 + 7.1.1 + debug@^4.3.4 + ajv + 5.3.0 + co@^4.6.0 + fast-deep-equal@^1.0.0 + fast-json-stable-stringify@^2.0.0 + json-schema-traverse@^0.3.0 + 5.4.0 + co@^4.6.0 + fast-deep-equal@^1.0.0 + fast-json-stable-stringify@^2.0.0 + json-schema-traverse@^0.3.0 + 5.5.0 + co@^4.6.0 + fast-deep-equal@^1.0.0 + fast-json-stable-stringify@^2.0.0 + json-schema-traverse@^0.3.0 + 5.5.1 + co@^4.6.0 + fast-deep-equal@^1.0.0 + fast-json-stable-stringify@^2.0.0 + json-schema-traverse@^0.3.0 + 5.5.2 + co@^4.6.0 + fast-deep-equal@^1.0.0 + fast-json-stable-stringify@^2.0.0 + json-schema-traverse@^0.3.0 + 6.12.6 + fast-deep-equal@^3.1.1 + fast-json-stable-stringify@^2.0.0 + json-schema-traverse@^0.4.1 + uri-js@^4.2.2 + ansi-colors + 3.2.3 + 4.1.1 + ansi-gray + 0.1.1 + ansi-wrap@0.1.0 + ansi-regex + 2.1.1 + 3.0.0 + 3.0.1 + 4.1.1 + 5.0.1 + ansi-styles + 3.2.1 + color-convert@^1.9.0 + 4.3.0 + color-convert@^2.0.1 + ansi-wrap + 0.1.0 + anymatch + 3.0.3 + normalize-path@^3.0.0 + picomatch@^2.0.4 + 3.1.3 + normalize-path@^3.0.0 + picomatch@^2.0.4 + arch + 2.1.1 + 2.2.0 + argparse + 1.0.10 + sprintf-js@~1.0.2 + 2.0.1 + array-buffer-byte-length + 1.0.1 + call-bind@^1.0.5 + is-array-buffer@^3.0.4 + array-equal + 1.0.0 + 1.0.2 + array.prototype.reduce + 1.0.7 + call-bind@^1.0.7 + define-properties@^1.2.1 + es-abstract@^1.23.2 + es-array-method-boxes-properly@^1.0.0 + es-errors@^1.3.0 + es-object-atoms@^1.0.0 + is-string@^1.0.7 + arraybuffer.prototype.slice + 1.0.3 + array-buffer-byte-length@^1.0.1 + call-bind@^1.0.5 + define-properties@^1.2.1 + es-abstract@^1.22.3 + es-errors@^1.2.1 + get-intrinsic@^1.2.3 + is-array-buffer@^3.0.4 + is-shared-array-buffer@^1.0.2 + arrify + 2.0.1 + asn1 + 0.2.4 + safer-buffer@~2.1.0 + 0.2.6 + safer-buffer@~2.1.0 + assert-plus + 1.0.0 + assertion-error + 1.1.0 + async-limiter + 1.0.1 + asynckit + 0.4.0 + autoprefixer + 9.3.0 + browserslist@^4.3.2 + caniuse-lite@^1.0.30000898 + normalize-range@^0.1.2 + num2fraction@^1.2.2 + postcss@^7.0.5 + postcss-value-parser@^3.3.1 + 9.8.8 + browserslist@^4.12.0 + caniuse-lite@^1.0.30001109 + normalize-range@^0.1.2 + num2fraction@^1.2.2 + picocolors@^0.2.1 + postcss@^7.0.32 + postcss-value-parser@^4.1.0 + 10.4.19 + browserslist@^4.23.0 + caniuse-lite@^1.0.30001599 + fraction.js@^4.3.7 + normalize-range@^0.1.2 + picocolors@^1.0.0 + Scope peer|postcss@^8.1.0 + postcss-value-parser@^4.2.0 + available-typed-arrays + 1.0.7 + possible-typed-array-names@^1.0.0 + aws-sign2 + 0.7.0 + aws4 + 1.8.0 + 1.12.0 + babel-plugin-dynamic-import-node + 2.3.0 + object.assign@^4.1.0 + babel-plugin-func-wrap + 1.1.0 + babel-plugin-polyfill-corejs2 + 0.4.11 + @babel/compat-data@^7.22.6 + Scope peer|@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0 + @babel/helper-define-polyfill-provider@^0.6.2 + semver@^6.3.1 + babel-plugin-polyfill-corejs3 + 0.10.4 + Scope peer|@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0 + @babel/helper-define-polyfill-provider@^0.6.1 + core-js-compat@^3.36.1 + babel-plugin-polyfill-regenerator + 0.6.2 + Scope peer|@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0 + @babel/helper-define-polyfill-provider@^0.6.2 + balanced-match + 1.0.0 + 1.0.2 + base64-js + 1.5.1 + bcrypt-pbkdf + 1.0.2 + tweetnacl@^0.14.3 + bignumber.js + 9.0.1 + 9.1.2 + binary-extensions + 2.0.0 + 2.3.0 + bluebird + 3.7.2 + brace-expansion + 1.1.11 + balanced-match@^1.0.0 + concat-map@0.0.1 + 2.0.1 + balanced-match@^1.0.0 + braces + 3.0.2 + fill-range@^7.0.1 + browser-process-hrtime + 0.1.3 + 1.0.0 + browser-stdout + 1.3.1 + browserslist + 4.3.2 + caniuse-lite@^1.0.30000898 + electron-to-chromium@^1.3.80 + node-releases@^1.0.0-alpha.14 + 4.3.3 + caniuse-lite@^1.0.30000898 + electron-to-chromium@^1.3.81 + node-releases@^1.0.0-alpha.15 + 4.3.4 + caniuse-lite@^1.0.30000899 + electron-to-chromium@^1.3.82 + node-releases@^1.0.1 + 4.3.5 + caniuse-lite@^1.0.30000912 + electron-to-chromium@^1.3.86 + node-releases@^1.0.5 + 4.3.6 + caniuse-lite@^1.0.30000921 + electron-to-chromium@^1.3.92 + node-releases@^1.1.1 + 4.3.7 + caniuse-lite@^1.0.30000925 + electron-to-chromium@^1.3.96 + node-releases@^1.1.3 + 4.4.0 + caniuse-lite@^1.0.30000928 + electron-to-chromium@^1.3.100 + node-releases@^1.1.3 + 4.4.1 + caniuse-lite@^1.0.30000929 + electron-to-chromium@^1.3.103 + node-releases@^1.1.3 + 4.4.2 + caniuse-lite@^1.0.30000939 + electron-to-chromium@^1.3.113 + node-releases@^1.1.8 + 4.5.0 + caniuse-lite@^1.0.30000948 + electron-to-chromium@^1.3.116 + node-releases@^1.1.10 + 4.5.1 + caniuse-lite@^1.0.30000949 + electron-to-chromium@^1.3.116 + node-releases@^1.1.11 + 4.5.2 + caniuse-lite@^1.0.30000951 + electron-to-chromium@^1.3.116 + node-releases@^1.1.11 + 4.5.3 + caniuse-lite@^1.0.30000955 + electron-to-chromium@^1.3.122 + node-releases@^1.1.12 + 4.5.4 + caniuse-lite@^1.0.30000955 + electron-to-chromium@^1.3.122 + node-releases@^1.1.13 + 4.5.5 + caniuse-lite@^1.0.30000960 + electron-to-chromium@^1.3.124 + node-releases@^1.1.14 + 4.5.6 + caniuse-lite@^1.0.30000963 + electron-to-chromium@^1.3.127 + node-releases@^1.1.17 + 4.6.0 + caniuse-lite@^1.0.30000967 + electron-to-chromium@^1.3.133 + node-releases@^1.1.19 + 4.6.1 + caniuse-lite@^1.0.30000971 + electron-to-chromium@^1.3.137 + node-releases@^1.1.21 + 4.6.2 + caniuse-lite@^1.0.30000974 + electron-to-chromium@^1.3.150 + node-releases@^1.1.23 + 4.6.3 + caniuse-lite@^1.0.30000975 + electron-to-chromium@^1.3.164 + node-releases@^1.1.23 + 4.6.4 + caniuse-lite@^1.0.30000981 + electron-to-chromium@^1.3.188 + node-releases@^1.1.25 + 4.6.5 + caniuse-lite@^1.0.30000984 + electron-to-chromium@^1.3.191 + node-releases@^1.1.25 + 4.6.6 + caniuse-lite@^1.0.30000984 + electron-to-chromium@^1.3.191 + node-releases@^1.1.25 + 4.7.0 + caniuse-lite@^1.0.30000989 + electron-to-chromium@^1.3.247 + node-releases@^1.1.29 + 4.7.1 + caniuse-lite@^1.0.30000999 + electron-to-chromium@^1.3.284 + node-releases@^1.1.36 + 4.7.2 + caniuse-lite@^1.0.30001004 + electron-to-chromium@^1.3.295 + node-releases@^1.1.38 + 4.7.3 + caniuse-lite@^1.0.30001010 + electron-to-chromium@^1.3.306 + node-releases@^1.1.40 + 4.8.0 + caniuse-lite@^1.0.30001012 + electron-to-chromium@^1.3.317 + node-releases@^1.1.41 + 4.8.1 + caniuse-lite@^1.0.30001015 + electron-to-chromium@^1.3.322 + node-releases@^1.1.42 + 4.8.2 + caniuse-lite@^1.0.30001015 + electron-to-chromium@^1.3.322 + node-releases@^1.1.42 + 4.8.3 + caniuse-lite@^1.0.30001017 + electron-to-chromium@^1.3.322 + node-releases@^1.1.44 + 4.8.4 + caniuse-lite@^1.0.30001021 + electron-to-chromium@^1.3.338 + node-releases@^1.1.46 + 4.8.5 + caniuse-lite@^1.0.30001022 + electron-to-chromium@^1.3.338 + node-releases@^1.1.46 + 4.8.6 + caniuse-lite@^1.0.30001023 + electron-to-chromium@^1.3.341 + node-releases@^1.1.47 + 4.8.7 + caniuse-lite@^1.0.30001027 + electron-to-chromium@^1.3.349 + node-releases@^1.1.49 + 4.9.0 + caniuse-lite@^1.0.30001030 + electron-to-chromium@^1.3.361 + node-releases@^1.1.50 + 4.9.1 + caniuse-lite@^1.0.30001030 + electron-to-chromium@^1.3.363 + node-releases@^1.1.50 + 4.10.0 + caniuse-lite@^1.0.30001035 + electron-to-chromium@^1.3.378 + node-releases@^1.1.52 + pkg-up@^3.1.0 + 4.11.0 + caniuse-lite@^1.0.30001035 + electron-to-chromium@^1.3.380 + node-releases@^1.1.52 + pkg-up@^3.1.0 + 4.11.1 + caniuse-lite@^1.0.30001038 + electron-to-chromium@^1.3.390 + node-releases@^1.1.53 + pkg-up@^2.0.0 + 4.12.0 + caniuse-lite@^1.0.30001043 + electron-to-chromium@^1.3.413 + node-releases@^1.1.53 + pkg-up@^2.0.0 + 4.12.1 + caniuse-lite@^1.0.30001088 + electron-to-chromium@^1.3.481 + escalade@^3.0.1 + node-releases@^1.1.58 + 4.12.2 + caniuse-lite@^1.0.30001088 + electron-to-chromium@^1.3.483 + escalade@^3.0.1 + node-releases@^1.1.58 + 4.13.0 + caniuse-lite@^1.0.30001093 + electron-to-chromium@^1.3.488 + escalade@^3.0.1 + node-releases@^1.1.58 + 4.14.0 + caniuse-lite@^1.0.30001111 + electron-to-chromium@^1.3.523 + escalade@^3.0.2 + node-releases@^1.1.60 + 4.14.1 + caniuse-lite@^1.0.30001124 + electron-to-chromium@^1.3.562 + escalade@^3.0.2 + node-releases@^1.1.60 + 4.14.2 + caniuse-lite@^1.0.30001125 + electron-to-chromium@^1.3.564 + escalade@^3.0.2 + node-releases@^1.1.61 + 4.14.3 + caniuse-lite@^1.0.30001131 + electron-to-chromium@^1.3.570 + escalade@^3.1.0 + node-releases@^1.1.61 + 4.14.4 + caniuse-lite@^1.0.30001135 + electron-to-chromium@^1.3.570 + escalade@^3.1.0 + node-releases@^1.1.61 + 4.14.5 + caniuse-lite@^1.0.30001135 + electron-to-chromium@^1.3.571 + escalade@^3.1.0 + node-releases@^1.1.61 + 4.14.6 + caniuse-lite@^1.0.30001154 + electron-to-chromium@^1.3.585 + escalade@^3.1.1 + node-releases@^1.1.65 + 4.14.7 + caniuse-lite@^1.0.30001157 + colorette@^1.2.1 + electron-to-chromium@^1.3.591 + escalade@^3.1.1 + node-releases@^1.1.66 + 4.15.0 + caniuse-lite@^1.0.30001164 + colorette@^1.2.1 + electron-to-chromium@^1.3.612 + escalade@^3.1.1 + node-releases@^1.1.67 + 4.16.0 + caniuse-lite@^1.0.30001165 + colorette@^1.2.1 + electron-to-chromium@^1.3.621 + escalade@^3.1.1 + node-releases@^1.1.67 + 4.16.1 + caniuse-lite@^1.0.30001173 + colorette@^1.2.1 + electron-to-chromium@^1.3.634 + escalade@^3.1.1 + node-releases@^1.1.69 + 4.16.2 + caniuse-lite@^1.0.30001181 + colorette@^1.2.1 + electron-to-chromium@^1.3.649 + escalade@^3.1.1 + node-releases@^1.1.70 + 4.16.3 + caniuse-lite@^1.0.30001181 + colorette@^1.2.1 + electron-to-chromium@^1.3.649 + escalade@^3.1.1 + node-releases@^1.1.70 + 4.16.4 + caniuse-lite@^1.0.30001208 + colorette@^1.2.2 + electron-to-chromium@^1.3.712 + escalade@^3.1.1 + node-releases@^1.1.71 + 4.16.5 + caniuse-lite@^1.0.30001214 + colorette@^1.2.2 + electron-to-chromium@^1.3.719 + escalade@^3.1.1 + node-releases@^1.1.71 + 4.16.6 + caniuse-lite@^1.0.30001219 + colorette@^1.2.2 + electron-to-chromium@^1.3.723 + escalade@^3.1.1 + node-releases@^1.1.71 + 4.16.7 + caniuse-lite@^1.0.30001248 + colorette@^1.2.2 + electron-to-chromium@^1.3.793 + escalade@^3.1.1 + node-releases@^1.1.73 + 4.16.8 + caniuse-lite@^1.0.30001251 + colorette@^1.3.0 + electron-to-chromium@^1.3.811 + escalade@^3.1.1 + node-releases@^1.1.75 + 4.17.0 + caniuse-lite@^1.0.30001254 + colorette@^1.3.0 + electron-to-chromium@^1.3.830 + escalade@^3.1.1 + node-releases@^1.1.75 + 4.17.1 + caniuse-lite@^1.0.30001259 + electron-to-chromium@^1.3.846 + escalade@^3.1.1 + nanocolors@^0.1.5 + node-releases@^1.1.76 + 4.17.2 + caniuse-lite@^1.0.30001261 + electron-to-chromium@^1.3.854 + escalade@^3.1.1 + nanocolors@^0.2.12 + node-releases@^1.1.76 + 4.17.3 + caniuse-lite@^1.0.30001264 + electron-to-chromium@^1.3.857 + escalade@^3.1.1 + node-releases@^1.1.77 + picocolors@^0.2.1 + 4.17.4 + caniuse-lite@^1.0.30001265 + electron-to-chromium@^1.3.867 + escalade@^3.1.1 + node-releases@^2.0.0 + picocolors@^1.0.0 + 4.17.5 + caniuse-lite@^1.0.30001271 + electron-to-chromium@^1.3.878 + escalade@^3.1.1 + node-releases@^2.0.1 + picocolors@^1.0.0 + 4.17.6 + caniuse-lite@^1.0.30001274 + electron-to-chromium@^1.3.886 + escalade@^3.1.1 + node-releases@^2.0.1 + picocolors@^1.0.0 + 4.18.0 + caniuse-lite@^1.0.30001280 + electron-to-chromium@^1.3.896 + escalade@^3.1.1 + node-releases@^2.0.1 + picocolors@^1.0.0 + 4.18.1 + caniuse-lite@^1.0.30001280 + electron-to-chromium@^1.3.896 + escalade@^3.1.1 + node-releases@^2.0.1 + picocolors@^1.0.0 + 4.19.0 + caniuse-lite@^1.0.30001286 + electron-to-chromium@^1.4.17 + escalade@^3.1.1 + node-releases@^2.0.1 + picocolors@^1.0.0 + 4.19.1 + caniuse-lite@^1.0.30001286 + electron-to-chromium@^1.4.17 + escalade@^3.1.1 + node-releases@^2.0.1 + picocolors@^1.0.0 + 4.19.2 + caniuse-lite@^1.0.30001312 + electron-to-chromium@^1.4.71 + escalade@^3.1.1 + node-releases@^2.0.2 + picocolors@^1.0.0 + 4.19.3 + caniuse-lite@^1.0.30001312 + electron-to-chromium@^1.4.71 + escalade@^3.1.1 + node-releases@^2.0.2 + picocolors@^1.0.0 + 4.20.0 + caniuse-lite@^1.0.30001313 + electron-to-chromium@^1.4.76 + escalade@^3.1.1 + node-releases@^2.0.2 + picocolors@^1.0.0 + 4.20.1 + caniuse-lite@^1.0.30001317 + electron-to-chromium@^1.4.84 + escalade@^3.1.1 + node-releases@^2.0.2 + picocolors@^1.0.0 + 4.20.2 + caniuse-lite@^1.0.30001317 + electron-to-chromium@^1.4.84 + escalade@^3.1.1 + node-releases@^2.0.2 + picocolors@^1.0.0 + 4.20.3 + caniuse-lite@^1.0.30001332 + electron-to-chromium@^1.4.118 + escalade@^3.1.1 + node-releases@^2.0.3 + picocolors@^1.0.0 + 4.20.4 + caniuse-lite@^1.0.30001349 + electron-to-chromium@^1.4.147 + escalade@^3.1.1 + node-releases@^2.0.5 + picocolors@^1.0.0 + 4.21.0 + caniuse-lite@^1.0.30001358 + electron-to-chromium@^1.4.164 + node-releases@^2.0.5 + update-browserslist-db@^1.0.0 + 4.21.1 + caniuse-lite@^1.0.30001359 + electron-to-chromium@^1.4.172 + node-releases@^2.0.5 + update-browserslist-db@^1.0.4 + 4.21.2 + caniuse-lite@^1.0.30001366 + electron-to-chromium@^1.4.188 + node-releases@^2.0.6 + update-browserslist-db@^1.0.4 + 4.21.3 + caniuse-lite@^1.0.30001370 + electron-to-chromium@^1.4.202 + node-releases@^2.0.6 + update-browserslist-db@^1.0.5 + 4.21.4 + caniuse-lite@^1.0.30001400 + electron-to-chromium@^1.4.251 + node-releases@^2.0.6 + update-browserslist-db@^1.0.9 + 4.21.5 + caniuse-lite@^1.0.30001449 + electron-to-chromium@^1.4.284 + node-releases@^2.0.8 + update-browserslist-db@^1.0.10 + 4.21.6 + caniuse-lite@^1.0.30001489 + electron-to-chromium@^1.4.411 + node-releases@^2.0.12 + update-browserslist-db@^1.0.11 + 4.21.7 + caniuse-lite@^1.0.30001489 + electron-to-chromium@^1.4.411 + node-releases@^2.0.12 + update-browserslist-db@^1.0.11 + 4.21.8 + caniuse-lite@^1.0.30001502 + electron-to-chromium@^1.4.428 + node-releases@^2.0.12 + update-browserslist-db@^1.0.11 + 4.21.9 + caniuse-lite@^1.0.30001503 + electron-to-chromium@^1.4.431 + node-releases@^2.0.12 + update-browserslist-db@^1.0.11 + 4.21.10 + caniuse-lite@^1.0.30001517 + electron-to-chromium@^1.4.477 + node-releases@^2.0.13 + update-browserslist-db@^1.0.11 + 4.21.11 + caniuse-lite@^1.0.30001538 + electron-to-chromium@^1.4.526 + node-releases@^2.0.13 + update-browserslist-db@^1.0.13 + 4.22.0 + caniuse-lite@^1.0.30001539 + electron-to-chromium@^1.4.530 + node-releases@^2.0.13 + update-browserslist-db@^1.0.13 + 4.22.1 + caniuse-lite@^1.0.30001541 + electron-to-chromium@^1.4.535 + node-releases@^2.0.13 + update-browserslist-db@^1.0.13 + 4.22.2 + caniuse-lite@^1.0.30001565 + electron-to-chromium@^1.4.601 + node-releases@^2.0.14 + update-browserslist-db@^1.0.13 + 4.22.3 + caniuse-lite@^1.0.30001580 + electron-to-chromium@^1.4.648 + node-releases@^2.0.14 + update-browserslist-db@^1.0.13 + 4.23.0 + caniuse-lite@^1.0.30001587 + electron-to-chromium@^1.4.668 + node-releases@^2.0.14 + update-browserslist-db@^1.0.13 + buffer-crc32 + 0.2.13 + buffer-equal-constant-time + 1.0.1 + buffer-from + 1.1.1 + 1.1.2 + builtin-modules + 3.2.0 + 3.3.0 + bytes + 3.0.0 + 3.1.0 + 3.1.2 + call-bind + 1.0.7 + es-define-property@^1.0.0 + es-errors@^1.3.0 + function-bind@^1.1.2 + get-intrinsic@^1.2.4 + set-function-length@^1.2.1 + camel-case + 3.0.0 + no-case@^2.2.0 + upper-case@^1.1.1 + camelcase + 4.1.0 + 5.3.1 + 6.3.0 + caniuse-lite + 1.0.30000898 + 1.0.30000989 + 1.0.30001616 + caseless + 0.12.0 + catharsis + 0.9.0 + lodash@^4.17.15 + chai + 4.2.0 + assertion-error@^1.1.0 + check-error@^1.0.2 + deep-eql@^3.0.1 + get-func-name@^2.0.0 + pathval@^1.1.0 + type-detect@^4.0.5 + 4.4.1 + assertion-error@^1.1.0 + check-error@^1.0.3 + deep-eql@^4.1.3 + get-func-name@^2.0.2 + loupe@^2.3.6 + pathval@^1.1.1 + type-detect@^4.0.8 + chalk + 2.4.1 + ansi-styles@^3.2.1 + escape-string-regexp@^1.0.5 + supports-color@^5.3.0 + 2.4.2 + ansi-styles@^3.2.1 + escape-string-regexp@^1.0.5 + supports-color@^5.3.0 + 4.1.2 + ansi-styles@^4.1.0 + supports-color@^7.1.0 + check-error + 1.0.2 + 1.0.3 + get-func-name@^2.0.2 + chokidar + 3.0.2 + anymatch@^3.0.1 + braces@^3.0.2 + opt|fsevents@^2.0.6 + fsevents@^2.0.6 + glob-parent@^5.0.0 + is-binary-path@^2.1.0 + is-glob@^4.0.1 + normalize-path@^3.0.0 + readdirp@^3.1.1 + 3.3.0 + anymatch@~3.1.1 + braces@~3.0.2 + opt|fsevents@~2.1.1 + fsevents@~2.1.1 + glob-parent@~5.1.0 + is-binary-path@~2.1.0 + is-glob@~4.0.1 + normalize-path@~3.0.0 + readdirp@~3.2.0 + 3.5.1 + anymatch@~3.1.1 + braces@~3.0.2 + opt|fsevents@~2.3.1 + fsevents@~2.3.1 + glob-parent@~5.1.0 + is-binary-path@~2.1.0 + is-glob@~4.0.1 + normalize-path@~3.0.0 + readdirp@~3.5.0 + 3.5.3 + anymatch@~3.1.2 + braces@~3.0.2 + opt|fsevents@~2.3.2 + fsevents@~2.3.2 + glob-parent@~5.1.2 + is-binary-path@~2.1.0 + is-glob@~4.0.1 + normalize-path@~3.0.0 + readdirp@~3.6.0 + 3.6.0 + anymatch@~3.1.2 + braces@~3.0.2 + opt|fsevents@~2.3.2 + glob-parent@~5.1.2 + is-binary-path@~2.1.0 + is-glob@~4.0.1 + normalize-path@~3.0.0 + readdirp@~3.6.0 + clean-css + 4.2.1 + source-map@~0.6.0 + 4.2.4 + source-map@~0.6.0 + clipboardy + 1.2.3 + arch@^2.1.0 + execa@^0.8.0 + 2.1.0 + arch@^2.1.1 + execa@^1.0.0 + 2.3.0 + arch@^2.1.1 + execa@^1.0.0 + is-wsl@^2.1.1 + cliui + 4.1.0 + string-width@^2.1.1 + strip-ansi@^4.0.0 + wrap-ansi@^2.0.0 + 5.0.0 + string-width@^3.1.0 + strip-ansi@^5.2.0 + wrap-ansi@^5.1.0 + 7.0.4 + string-width@^4.2.0 + strip-ansi@^6.0.0 + wrap-ansi@^7.0.0 + 8.0.1 + string-width@^4.2.0 + strip-ansi@^6.0.1 + wrap-ansi@^7.0.0 + clone + 2.1.2 + clone-buffer + 1.0.0 + clone-stats + 1.0.0 + cloneable-readable + 1.1.2 + inherits@^2.0.1 + process-nextick-args@^2.0.0 + readable-stream@^2.3.5 + 1.1.3 + inherits@^2.0.1 + process-nextick-args@^2.0.0 + readable-stream@^2.3.5 + co + 4.6.0 + code-point-at + 1.1.0 + color-convert + 1.9.3 + color-name@1.1.3 + 2.0.1 + color-name@~1.1.4 + color-name + 1.1.3 + 1.1.4 + color-support + 1.1.3 + combined-stream + 1.0.7 + delayed-stream@~1.0.0 + 1.0.8 + delayed-stream@~1.0.0 + commander + 0.6.1 + 2.3.0 + 2.15.1 + 2.17.1 + 2.20.0 + 2.20.3 + commondir + 1.0.1 + concat-map + 0.0.1 + concat-stream + 1.6.2 + buffer-from@^1.0.0 + inherits@^2.0.3 + readable-stream@^2.2.2 + typedarray@^0.0.6 + console-log-level + 1.4.1 + content-disposition + 0.5.2 + convert-source-map + 1.6.0 + safe-buffer@~5.1.1 + 2.0.0 + core-js + 3.6.5 + 3.37.0 + core-js-compat + 3.2.1 + browserslist@^4.6.6 + semver@^6.3.0 + 3.37.0 + browserslist@^4.23.0 + core-util-is + 1.0.2 + 1.0.3 + cross-spawn + 5.1.0 + lru-cache@^4.0.1 + shebang-command@^1.2.0 + which@^1.2.9 + 6.0.5 + nice-try@^1.0.4 + path-key@^2.0.1 + semver@^5.5.0 + shebang-command@^1.2.0 + which@^1.2.9 + cssom + 0.3.4 + 0.3.8 + 0.4.1 + 0.4.4 + cssstyle + 1.1.1 + cssom@0.3.x + 1.4.0 + cssom@0.3.x + 2.0.0 + cssom@~0.3.6 + 2.3.0 + cssom@~0.3.6 + custom-event-polyfill + 1.0.7 + dashdash + 1.14.1 + assert-plus@^1.0.0 + dat.gui + 0.7.3 + 0.7.9 + data-urls + 1.0.1 + abab@^2.0.0 + whatwg-mimetype@^2.1.0 + whatwg-url@^7.0.0 + 1.1.0 + abab@^2.0.0 + whatwg-mimetype@^2.2.0 + whatwg-url@^7.0.0 + data-view-buffer + 1.0.1 + call-bind@^1.0.6 + es-errors@^1.3.0 + is-data-view@^1.0.1 + data-view-byte-length + 1.0.1 + call-bind@^1.0.7 + es-errors@^1.3.0 + is-data-view@^1.0.1 + data-view-byte-offset + 1.0.0 + call-bind@^1.0.6 + es-errors@^1.3.0 + is-data-view@^1.0.1 + debug + 2.2.0 + ms@0.7.1 + 2.6.9 + ms@2.0.0 + 3.1.0 + ms@2.0.0 + 3.2.6 + ms@^2.1.1 + 3.2.7 + ms@^2.1.1 + 4.3.1 + ms@2.1.2 + 4.3.3 + ms@2.1.2 + 4.3.4 + ms@2.1.2 + decamelize + 1.2.0 + 2.0.0 + xregexp@4.0.0 + 4.0.0 + deep-eql + 3.0.1 + type-detect@^4.0.0 + 4.1.3 + type-detect@^4.0.0 + deep-is + 0.1.3 + 0.1.4 + deepmerge + 4.2.2 + 4.3.1 + define-data-property + 1.1.4 + es-define-property@^1.0.0 + es-errors@^1.3.0 + gopd@^1.0.1 + define-properties + 1.1.3 + object-keys@^1.0.12 + 1.2.1 + define-data-property@^1.0.1 + has-property-descriptors@^1.0.0 + object-keys@^1.1.1 + delayed-stream + 1.0.0 + dhost + 0.1.9 + bytes@^3.1.0 + chalk@^2.4.2 + clipboardy@^1.2.3 + he@^1.2.0 + mime@^2.4.0 + mri@^1.1.4 + diff + 1.4.0 + 3.5.0 + 5.0.0 + dom-storage + 2.1.0 + domexception + 1.0.1 + webidl-conversions@^4.0.2 + duplexify + 4.1.2 + end-of-stream@^1.4.1 + inherits@^2.0.3 + readable-stream@^3.1.1 + stream-shift@^1.0.0 + 4.1.3 + end-of-stream@^1.4.1 + inherits@^2.0.3 + readable-stream@^3.1.1 + stream-shift@^1.0.2 + ecc-jsbn + 0.1.2 + jsbn@~0.1.0 + safer-buffer@^2.1.0 + ecdsa-sig-formatter + 1.0.11 + safe-buffer@^5.0.1 + electron-to-chromium + 1.3.81 + 1.3.264 + 1.4.756 + 1.4.757 + emoji-regex + 7.0.3 + 8.0.0 + end-of-stream + 1.4.1 + once@^1.4.0 + 1.4.4 + once@^1.4.0 + ent + 2.2.0 + entities + 4.5.0 + es-abstract + 1.23.3 + array-buffer-byte-length@^1.0.1 + arraybuffer.prototype.slice@^1.0.3 + available-typed-arrays@^1.0.7 + call-bind@^1.0.7 + data-view-buffer@^1.0.1 + data-view-byte-length@^1.0.1 + data-view-byte-offset@^1.0.0 + es-define-property@^1.0.0 + es-errors@^1.3.0 + es-object-atoms@^1.0.0 + es-set-tostringtag@^2.0.3 + es-to-primitive@^1.2.1 + function.prototype.name@^1.1.6 + get-intrinsic@^1.2.4 + get-symbol-description@^1.0.2 + globalthis@^1.0.3 + gopd@^1.0.1 + has-property-descriptors@^1.0.2 + has-proto@^1.0.3 + has-symbols@^1.0.3 + hasown@^2.0.2 + internal-slot@^1.0.7 + is-array-buffer@^3.0.4 + is-callable@^1.2.7 + is-data-view@^1.0.1 + is-negative-zero@^2.0.3 + is-regex@^1.1.4 + is-shared-array-buffer@^1.0.3 + is-string@^1.0.7 + is-typed-array@^1.1.13 + is-weakref@^1.0.2 + object-inspect@^1.13.1 + object-keys@^1.1.1 + object.assign@^4.1.5 + regexp.prototype.flags@^1.5.2 + safe-array-concat@^1.1.2 + safe-regex-test@^1.0.3 + string.prototype.trim@^1.2.9 + string.prototype.trimend@^1.0.8 + string.prototype.trimstart@^1.0.8 + typed-array-buffer@^1.0.2 + typed-array-byte-length@^1.0.1 + typed-array-byte-offset@^1.0.2 + typed-array-length@^1.0.6 + unbox-primitive@^1.0.2 + which-typed-array@^1.1.15 + es-array-method-boxes-properly + 1.0.0 + es-define-property + 1.0.0 + get-intrinsic@^1.2.4 + es-errors + 1.3.0 + es-object-atoms + 1.0.0 + es-errors@^1.3.0 + es-set-tostringtag + 2.0.3 + get-intrinsic@^1.2.4 + has-tostringtag@^1.0.2 + hasown@^2.0.1 + es-to-primitive + 1.2.1 + is-callable@^1.1.4 + is-date-object@^1.0.1 + is-symbol@^1.0.2 + es6-promise + 4.2.8 + es6-promisify + 5.0.0 + es6-promise@^4.0.3 + escalade + 3.1.1 + 3.1.2 + escape-string-regexp + 1.0.2 + 1.0.5 + 2.0.0 + 4.0.0 + escodegen + 1.11.0 + esprima@^3.1.3 + estraverse@^4.2.0 + esutils@^2.0.2 + optionator@^0.8.1 + opt|source-map@~0.6.1 + source-map@~0.6.1 + 1.12.0 + esprima@^3.1.3 + estraverse@^4.2.0 + esutils@^2.0.2 + optionator@^0.8.1 + opt|source-map@~0.6.1 + source-map@~0.6.1 + 1.14.3 + esprima@^4.0.1 + estraverse@^4.2.0 + esutils@^2.0.2 + optionator@^0.8.1 + opt|source-map@~0.6.1 + source-map@~0.6.1 + eslint-visitor-keys + 3.4.3 + esm-resolve + 1.0.6 + 1.0.11 + espree + 9.6.1 + acorn@^8.9.0 + acorn-jsx@^5.3.2 + eslint-visitor-keys@^3.4.1 + esprima + 3.1.3 + 4.0.1 + estraverse + 4.2.0 + 4.3.0 + 5.3.0 + estree-walker + 1.0.1 + 2.0.2 + esutils + 2.0.2 + 2.0.3 + event-target + 1.2.3 + event-target-shim + 5.0.1 + execa + 0.8.0 + cross-spawn@^5.0.1 + get-stream@^3.0.0 + is-stream@^1.1.0 + npm-run-path@^2.0.0 + p-finally@^1.0.0 + signal-exit@^3.0.0 + strip-eof@^1.0.0 + 0.10.0 + cross-spawn@^6.0.0 + get-stream@^3.0.0 + is-stream@^1.1.0 + npm-run-path@^2.0.0 + p-finally@^1.0.0 + signal-exit@^3.0.0 + strip-eof@^1.0.0 + 1.0.0 + cross-spawn@^6.0.0 + get-stream@^4.0.0 + is-stream@^1.1.0 + npm-run-path@^2.0.0 + p-finally@^1.0.0 + signal-exit@^3.0.0 + strip-eof@^1.0.0 + extend + 3.0.2 + extract-zip + 1.7.0 + concat-stream@^1.6.2 + debug@^2.6.9 + mkdirp@^0.5.4 + yauzl@^2.10.0 + extsprintf + 1.3.0 + 1.4.0 + fancy-log + 1.3.2 + ansi-gray@^0.1.1 + color-support@^1.1.3 + time-stamp@^1.0.0 + 1.3.3 + ansi-gray@^0.1.1 + color-support@^1.1.3 + parse-node-version@^1.0.0 + time-stamp@^1.0.0 + fast-async + 6.3.8 + nodent-compiler@^3.2.10 + nodent-runtime@>=3.2.1 + fast-deep-equal + 1.1.0 + 3.1.3 + fast-json-stable-stringify + 2.0.0 + 2.1.0 + fast-levenshtein + 2.0.6 + fast-text-encoding + 1.0.3 + 1.0.6 + fast-url-parser + 1.1.3 + punycode@^1.3.2 + faye-websocket + 0.11.3 + websocket-driver@>=0.5.1 + fd-slicer + 1.1.0 + pend@~1.2.0 + fill-range + 7.0.1 + to-regex-range@^5.0.1 + find-up + 3.0.0 + locate-path@^3.0.0 + 5.0.0 + locate-path@^6.0.0 + path-exists@^4.0.0 + firebase + 8.10.0 + @firebase/analytics@0.6.18 + @firebase/app@0.6.30 + @firebase/app-check@0.3.2 + @firebase/app-types@0.6.3 + @firebase/auth@0.16.8 + @firebase/database@0.11.0 + @firebase/firestore@2.4.0 + @firebase/functions@0.6.15 + @firebase/installations@0.4.32 + @firebase/messaging@0.8.0 + @firebase/performance@0.4.18 + @firebase/polyfill@0.3.36 + @firebase/remote-config@0.1.43 + @firebase/storage@0.7.0 + @firebase/util@1.3.0 + 8.10.1 + @firebase/analytics@0.6.18 + @firebase/app@0.6.30 + @firebase/app-check@0.3.2 + @firebase/app-types@0.6.3 + @firebase/auth@0.16.8 + @firebase/database@0.11.0 + @firebase/firestore@2.4.1 + @firebase/functions@0.6.16 + @firebase/installations@0.4.32 + @firebase/messaging@0.8.0 + @firebase/performance@0.4.18 + @firebase/polyfill@0.3.36 + @firebase/remote-config@0.1.43 + @firebase/storage@0.7.1 + @firebase/util@1.3.0 + flat + 4.1.1 + is-buffer@~2.0.3 + 5.0.2 + for-each + 0.3.3 + is-callable@^1.1.3 + forever-agent + 0.6.1 + form-data + 2.3.3 + asynckit@^0.4.0 + combined-stream@^1.0.6 + mime-types@^2.1.12 + 2.5.1 + asynckit@^0.4.0 + combined-stream@^1.0.6 + mime-types@^2.1.12 + formatio + 1.1.1 + samsam@~1.1 + fraction.js + 4.3.7 + fs.realpath + 1.0.0 + fsevents + 2.1.3 + 2.3.2 + 2.3.3 + function-bind + 1.1.1 + 1.1.2 + function.prototype.name + 1.1.6 + call-bind@^1.0.2 + define-properties@^1.2.0 + es-abstract@^1.22.1 + functions-have-names@^1.2.3 + functions-have-names + 1.2.3 + gaxios + 4.3.2 + abort-controller@^3.0.0 + extend@^3.0.2 + https-proxy-agent@^5.0.0 + is-stream@^2.0.0 + node-fetch@^2.6.1 + 4.3.3 + abort-controller@^3.0.0 + extend@^3.0.2 + https-proxy-agent@^5.0.0 + is-stream@^2.0.0 + node-fetch@^2.6.7 + 5.1.3 + extend@^3.0.2 + https-proxy-agent@^5.0.0 + is-stream@^2.0.0 + node-fetch@^2.6.9 + 6.5.0 + extend@^3.0.2 + https-proxy-agent@^7.0.1 + is-stream@^2.0.0 + node-fetch@^2.6.9 + uuid@^9.0.1 + gcp-metadata + 4.3.1 + gaxios@^4.0.0 + json-bigint@^1.0.0 + 5.3.0 + gaxios@^5.0.0 + json-bigint@^1.0.0 + 6.1.0 + gaxios@^6.0.0 + json-bigint@^1.0.0 + gensync + 1.0.0-beta.2 + get-caller-file + 1.0.3 + 2.0.5 + get-func-name + 2.0.0 + 2.0.2 + get-intrinsic + 1.2.4 + es-errors@^1.3.0 + function-bind@^1.1.2 + has-proto@^1.0.1 + has-symbols@^1.0.3 + hasown@^2.0.0 + get-stream + 3.0.0 + 4.1.0 + pump@^3.0.0 + get-symbol-description + 1.0.2 + call-bind@^1.0.5 + es-errors@^1.3.0 + get-intrinsic@^1.2.4 + getpass + 0.1.7 + assert-plus@^1.0.0 + git-last-commit + 1.0.1 + glob + 3.2.11 + inherits@2 + minimatch@0.3 + 7.1.2 + fs.realpath@^1.0.0 + inflight@^1.0.4 + inherits@2 + minimatch@^3.0.4 + once@^1.3.0 + path-is-absolute@^1.0.0 + 7.1.3 + fs.realpath@^1.0.0 + inflight@^1.0.4 + inherits@2 + minimatch@^3.0.4 + once@^1.3.0 + path-is-absolute@^1.0.0 + 7.1.6 + fs.realpath@^1.0.0 + inflight@^1.0.4 + inherits@2 + minimatch@^3.0.4 + once@^1.3.0 + path-is-absolute@^1.0.0 + 7.2.0 + fs.realpath@^1.0.0 + inflight@^1.0.4 + inherits@2 + minimatch@^3.0.4 + once@^1.3.0 + path-is-absolute@^1.0.0 + 7.2.3 + fs.realpath@^1.0.0 + inflight@^1.0.4 + inherits@2 + minimatch@^3.1.1 + once@^1.3.0 + path-is-absolute@^1.0.0 + 8.1.0 + fs.realpath@^1.0.0 + inflight@^1.0.4 + inherits@2 + minimatch@^5.0.1 + once@^1.3.0 + glob-parent + 5.0.0 + is-glob@^4.0.1 + 5.1.2 + is-glob@^4.0.1 + glob-slash + 1.0.0 + glob-slasher + 1.0.1 + glob-slash@^1.0.0 + lodash.isobject@^2.4.1 + toxic@^1.0.0 + globals + 11.8.0 + 11.12.0 + globalthis + 1.0.4 + define-properties@^1.2.1 + gopd@^1.0.1 + google-auth-library + 7.10.1 + arrify@^2.0.0 + base64-js@^1.3.0 + ecdsa-sig-formatter@^1.0.11 + fast-text-encoding@^1.0.0 + gaxios@^4.0.0 + gcp-metadata@^4.2.0 + gtoken@^5.0.4 + jws@^4.0.0 + lru-cache@^6.0.0 + 7.14.1 + arrify@^2.0.0 + base64-js@^1.3.0 + ecdsa-sig-formatter@^1.0.11 + fast-text-encoding@^1.0.0 + gaxios@^4.0.0 + gcp-metadata@^4.2.0 + gtoken@^5.0.4 + jws@^4.0.0 + lru-cache@^6.0.0 + 8.9.0 + arrify@^2.0.0 + base64-js@^1.3.0 + ecdsa-sig-formatter@^1.0.11 + fast-text-encoding@^1.0.0 + gaxios@^5.0.0 + gcp-metadata@^5.3.0 + gtoken@^6.1.0 + jws@^4.0.0 + lru-cache@^6.0.0 + 9.9.0 + base64-js@^1.3.0 + ecdsa-sig-formatter@^1.0.11 + gaxios@^6.1.1 + gcp-metadata@^6.1.0 + gtoken@^7.0.0 + jws@^4.0.0 + google-closure-compiler + 20190909.0.0 + chalk@2.x + google-closure-compiler-java@^20190909.0.0 + google-closure-compiler-js@^20190909.0.0 + google-closure-compiler-linux@^20190909.0.0 + opt|google-closure-compiler-linux@^20190909.0.0 + google-closure-compiler-osx@^20190909.0.0 + opt|google-closure-compiler-osx@^20190909.0.0 + google-closure-compiler-windows@^20190909.0.0 + opt|google-closure-compiler-windows@^20190909.0.0 + minimist@1.x + vinyl@2.x + vinyl-sourcemaps-apply@^0.2.0 + google-closure-compiler-java + 20190909.0.0 + google-closure-compiler-js + 20190909.0.0 + google-closure-compiler-linux + 20190909.0.0 + google-closure-compiler-osx + 20190909.0.0 + google-closure-compiler-windows + 20190909.0.0 + google-closure-library + 20190909.0.0 + 20190929.0.0 + 20191027.0.1 + promises-aplus-tests@^2.1.2 + 20191111.0.0 + promises-aplus-tests@^2.1.2 + 20200101.0.0 + promises-aplus-tests@^2.1.2 + 20200112.0.0 + promises-aplus-tests@^2.1.2 + 20200204.0.0 + 20200224.0.0 + 20200315.0.0 + google-gax + 2.28.0 + @grpc/grpc-js@~1.4.0 + @grpc/proto-loader@^0.6.1 + @types/long@^4.0.0 + abort-controller@^3.0.0 + duplexify@^4.0.0 + fast-text-encoding@^1.0.3 + google-auth-library@^7.6.1 + is-stream-ended@^0.1.4 + node-fetch@^2.6.1 + object-hash@^2.1.1 + proto3-json-serializer@^0.1.1 + protobufjs@6.11.2 + retry-request@^4.0.0 + 2.30.5 + @grpc/grpc-js@~1.6.0 + @grpc/proto-loader@^0.6.12 + @types/long@^4.0.0 + abort-controller@^3.0.0 + duplexify@^4.0.0 + fast-text-encoding@^1.0.3 + google-auth-library@^7.14.0 + is-stream-ended@^0.1.4 + node-fetch@^2.6.1 + object-hash@^3.0.0 + proto3-json-serializer@^0.1.8 + protobufjs@6.11.3 + retry-request@^4.0.0 + 3.6.1 + @grpc/grpc-js@~1.8.0 + @grpc/proto-loader@^0.7.0 + @types/long@^4.0.0 + @types/rimraf@^3.0.2 + abort-controller@^3.0.0 + duplexify@^4.0.0 + fast-text-encoding@^1.0.3 + google-auth-library@^8.0.2 + is-stream-ended@^0.1.4 + node-fetch@^2.6.1 + object-hash@^3.0.0 + proto3-json-serializer@^1.0.0 + protobufjs@7.2.4 + protobufjs-cli@1.1.1 + retry-request@^5.0.0 + 4.3.3 + @grpc/grpc-js@~1.10.3 + @grpc/proto-loader@^0.7.0 + @types/long@^4.0.0 + abort-controller@^3.0.0 + duplexify@^4.0.0 + google-auth-library@^9.3.0 + node-fetch@^2.6.1 + object-hash@^3.0.0 + proto3-json-serializer@^2.0.0 + protobufjs@7.2.6 + retry-request@^7.0.0 + uuid@^9.0.1 + google-p12-pem + 3.1.2 + node-forge@^0.10.0 + 3.1.4 + node-forge@^1.3.1 + 4.0.1 + node-forge@^1.3.1 + gopd + 1.0.1 + get-intrinsic@^1.1.3 + graceful-fs + 4.2.11 + growl + 1.9.2 + 1.10.5 + gtoken + 5.3.1 + gaxios@^4.0.0 + google-p12-pem@^3.0.3 + jws@^4.0.0 + 5.3.2 + gaxios@^4.0.0 + google-p12-pem@^3.1.3 + jws@^4.0.0 + 6.1.2 + gaxios@^5.0.1 + google-p12-pem@^4.0.0 + jws@^4.0.0 + 7.1.0 + gaxios@^6.0.0 + jws@^4.0.0 + har-schema + 2.0.0 + har-validator + 5.1.0 + ajv@^5.3.0 + har-schema@^2.0.0 + 5.1.5 + ajv@^6.12.3 + har-schema@^2.0.0 + has + 1.0.3 + function-bind@^1.1.1 + has-bigints + 1.0.2 + has-flag + 3.0.0 + 4.0.0 + has-property-descriptors + 1.0.2 + es-define-property@^1.0.0 + has-proto + 1.0.3 + has-symbols + 1.0.0 + 1.0.3 + has-tostringtag + 1.0.2 + has-symbols@^1.0.3 + hasown + 2.0.2 + function-bind@^1.1.2 + he + 1.1.1 + 1.2.0 + html-encoding-sniffer + 1.0.2 + whatwg-encoding@^1.0.1 + html-entities + 1.2.1 + 1.4.0 + html-minifier + 4.0.0 + camel-case@^3.0.0 + clean-css@^4.2.1 + commander@^2.19.0 + he@^1.2.0 + param-case@^2.1.1 + relateurl@^0.2.7 + uglify-js@^3.5.1 + html-modules-polyfill + 0.1.0 + jsdom@^15.1.1 + rollup@^1.19.4 + http-parser-js + 0.5.3 + 0.5.8 + http-proxy-agent + 5.0.0 + @tootallnate/once@2 + agent-base@6 + debug@4 + http-signature + 1.2.0 + assert-plus@^1.0.0 + jsprim@^1.2.2 + sshpk@^1.7.0 + https-proxy-agent + 2.2.4 + agent-base@^4.3.0 + debug@^3.1.0 + 5.0.0 + agent-base@6 + debug@4 + 5.0.1 + agent-base@6 + debug@4 + 7.0.4 + agent-base@^7.0.2 + debug@4 + iconv-lite + 0.4.24 + safer-buffer@>= 2.1.2 < 3 + idb + 3.0.2 + iframe-load + 0.1.4 + immutable + 4.3.5 + inflight + 1.0.6 + once@^1.3.0 + wrappy@1 + inherits + 2.0.3 + 2.0.4 + internal-slot + 1.0.7 + es-errors@^1.3.0 + hasown@^2.0.0 + side-channel@^1.0.4 + invariant + 2.2.4 + loose-envify@^1.0.0 + invert-kv + 2.0.0 + ip-regex + 2.1.0 + is-arguments + 1.1.1 + call-bind@^1.0.2 + has-tostringtag@^1.0.0 + is-array-buffer + 3.0.4 + call-bind@^1.0.2 + get-intrinsic@^1.2.1 + is-bigint + 1.0.4 + has-bigints@^1.0.1 + is-binary-path + 2.1.0 + binary-extensions@^2.0.0 + is-boolean-object + 1.1.2 + call-bind@^1.0.2 + has-tostringtag@^1.0.0 + is-buffer + 2.0.5 + is-builtin-module + 3.2.1 + builtin-modules@^3.3.0 + is-callable + 1.2.7 + is-core-module + 2.8.0 + has@^1.0.3 + 2.13.1 + hasown@^2.0.0 + is-data-view + 1.0.1 + is-typed-array@^1.1.13 + is-date-object + 1.0.5 + has-tostringtag@^1.0.0 + is-docker + 2.2.1 + is-extglob + 2.1.1 + is-fullwidth-code-point + 1.0.0 + number-is-nan@^1.0.0 + 2.0.0 + 3.0.0 + is-generator-function + 1.0.10 + has-tostringtag@^1.0.0 + is-glob + 4.0.1 + is-extglob@^2.1.1 + 4.0.3 + is-extglob@^2.1.1 + is-module + 1.0.0 + is-negative-zero + 2.0.3 + is-number + 7.0.0 + is-number-object + 1.0.7 + has-tostringtag@^1.0.0 + is-plain-obj + 2.1.0 + is-reference + 1.2.1 + @types/estree@* + is-regex + 1.1.4 + call-bind@^1.0.2 + has-tostringtag@^1.0.0 + is-shared-array-buffer + 1.0.3 + call-bind@^1.0.7 + is-stream + 1.1.0 + 2.0.1 + is-stream-ended + 0.1.4 + is-string + 1.0.7 + has-tostringtag@^1.0.0 + is-symbol + 1.0.4 + has-symbols@^1.0.2 + is-typed-array + 1.1.13 + which-typed-array@^1.1.14 + is-typedarray + 1.0.0 + is-unicode-supported + 0.1.0 + is-weakref + 1.0.2 + call-bind@^1.0.2 + is-wsl + 2.2.0 + is-docker@^2.0.0 + isarray + 1.0.0 + 2.0.5 + isexe + 2.0.0 + isstream + 0.1.2 + jade + 0.26.3 + commander@0.6.1 + mkdirp@0.3.0 + jquery + 3.5.0 + 3.7.1 + js-levenshtein + 1.1.6 + js-tokens + 4.0.0 + js-yaml + 3.13.1 + argparse@^1.0.7 + esprima@^4.0.0 + 4.0.0 + argparse@^2.0.1 + 4.1.0 + argparse@^2.0.1 + js2xmlparser + 4.0.2 + xmlcreate@^2.0.4 + jsbn + 0.1.1 + jsdoc + 4.0.3 + @babel/parser@^7.20.15 + @jsdoc/salty@^0.2.1 + @types/markdown-it@^14.1.1 + bluebird@^3.7.2 + catharsis@^0.9.0 + escape-string-regexp@^2.0.0 + js2xmlparser@^4.0.2 + klaw@^3.0.0 + markdown-it@^14.1.0 + markdown-it-anchor@^8.6.7 + marked@^4.0.10 + mkdirp@^1.0.4 + requizzle@^0.2.3 + strip-json-comments@^3.1.0 + underscore@~1.13.2 + jsdom + 12.2.0 + abab@^2.0.0 + acorn@^6.0.2 + acorn-globals@^4.3.0 + array-equal@^1.0.0 + cssom@^0.3.4 + cssstyle@^1.1.1 + data-urls@^1.0.1 + domexception@^1.0.1 + escodegen@^1.11.0 + html-encoding-sniffer@^1.0.2 + nwsapi@^2.0.9 + parse5@5.1.0 + pn@^1.1.0 + request@^2.88.0 + request-promise-native@^1.0.5 + saxes@^3.1.3 + symbol-tree@^3.2.2 + tough-cookie@^2.4.3 + w3c-hr-time@^1.0.1 + webidl-conversions@^4.0.2 + whatwg-encoding@^1.0.5 + whatwg-mimetype@^2.2.0 + whatwg-url@^7.0.0 + ws@^6.1.0 + xml-name-validator@^3.0.0 + 15.1.1 + abab@^2.0.0 + acorn@^6.1.1 + acorn-globals@^4.3.2 + array-equal@^1.0.0 + cssom@^0.3.6 + cssstyle@^1.2.2 + data-urls@^1.1.0 + domexception@^1.0.1 + escodegen@^1.11.1 + html-encoding-sniffer@^1.0.2 + nwsapi@^2.1.4 + parse5@5.1.0 + pn@^1.1.0 + request@^2.88.0 + request-promise-native@^1.0.7 + saxes@^3.1.9 + symbol-tree@^3.2.2 + tough-cookie@^3.0.1 + w3c-hr-time@^1.0.1 + w3c-xmlserializer@^1.1.2 + webidl-conversions@^4.0.2 + whatwg-encoding@^1.0.5 + whatwg-mimetype@^2.3.0 + whatwg-url@^7.0.0 + ws@^7.0.0 + xml-name-validator@^3.0.0 + 15.2.0 + abab@^2.0.0 + acorn@^7.1.0 + acorn-globals@^4.3.2 + array-equal@^1.0.0 + Scope peer|canvas@^2.5.0 + cssom@^0.4.1 + cssstyle@^2.0.0 + data-urls@^1.1.0 + domexception@^1.0.1 + escodegen@^1.11.1 + html-encoding-sniffer@^1.0.2 + nwsapi@^2.1.4 + parse5@5.1.0 + pn@^1.1.0 + request@^2.88.0 + request-promise-native@^1.0.7 + saxes@^3.1.9 + symbol-tree@^3.2.2 + tough-cookie@^3.0.1 + w3c-hr-time@^1.0.1 + w3c-xmlserializer@^1.1.2 + webidl-conversions@^4.0.2 + whatwg-encoding@^1.0.5 + whatwg-mimetype@^2.3.0 + whatwg-url@^7.0.0 + ws@^7.0.0 + xml-name-validator@^3.0.0 + 15.2.1 + abab@^2.0.0 + acorn@^7.1.0 + acorn-globals@^4.3.2 + array-equal@^1.0.0 + Scope peer|canvas@^2.5.0 + cssom@^0.4.1 + cssstyle@^2.0.0 + data-urls@^1.1.0 + domexception@^1.0.1 + escodegen@^1.11.1 + html-encoding-sniffer@^1.0.2 + nwsapi@^2.2.0 + parse5@5.1.0 + pn@^1.1.0 + request@^2.88.0 + request-promise-native@^1.0.7 + saxes@^3.1.9 + symbol-tree@^3.2.2 + tough-cookie@^3.0.1 + w3c-hr-time@^1.0.1 + w3c-xmlserializer@^1.1.2 + webidl-conversions@^4.0.2 + whatwg-encoding@^1.0.5 + whatwg-mimetype@^2.3.0 + whatwg-url@^7.0.0 + ws@^7.0.0 + xml-name-validator@^3.0.0 + jsesc + 0.5.0 + 2.5.1 + 2.5.2 + json-bigint + 1.0.0 + bignumber.js@^9.0.0 + json-schema + 0.2.3 + 0.4.0 + json-schema-traverse + 0.3.1 + 0.4.1 + json-stringify-safe + 5.0.1 + json5 + 2.1.0 + minimist@^1.2.0 + 2.2.3 + jsprim + 1.4.1 + assert-plus@1.0.0 + extsprintf@1.3.0 + json-schema@0.2.3 + verror@1.10.0 + 1.4.2 + assert-plus@1.0.0 + extsprintf@1.3.0 + json-schema@0.4.0 + verror@1.10.0 + jwa + 2.0.0 + buffer-equal-constant-time@1.0.1 + ecdsa-sig-formatter@1.0.11 + safe-buffer@^5.0.1 + jws + 4.0.0 + jwa@^2.0.0 + safe-buffer@^5.0.1 + klaw + 3.0.0 + graceful-fs@^4.1.9 + lcid + 2.0.0 + invert-kv@^2.0.0 + levn + 0.3.0 + prelude-ls@~1.1.2 + type-check@~0.3.2 + linkify-it + 5.0.0 + uc.micro@^2.0.0 + lit-element + 2.2.1 + lit-html@^1.0.0 + 2.5.1 + lit-html@^1.1.1 + lit-html + 1.1.1 + 1.4.1 + locate-path + 3.0.0 + p-locate@^3.0.0 + path-exists@^3.0.0 + 6.0.0 + p-locate@^5.0.0 + lodash + 4.17.20 + 4.17.21 + lodash._objecttypes + 2.4.1 + lodash.camelcase + 4.3.0 + lodash.debounce + 4.0.8 + lodash.isobject + 2.4.1 + lodash._objecttypes@~2.4.1 + lodash.sortby + 4.7.0 + log-symbols + 2.2.0 + chalk@^2.0.1 + 3.0.0 + chalk@^2.4.2 + 4.0.0 + chalk@^4.0.0 + 4.1.0 + chalk@^4.1.0 + is-unicode-supported@^0.1.0 + lolex + 1.3.2 + long + 4.0.0 + 5.2.3 + loose-envify + 1.4.0 + js-tokens@^3.0.0 || ^4.0.0 + lottie-web + 5.5.10 + 5.12.2 + loupe + 2.3.7 + get-func-name@^2.0.1 + lower-case + 1.1.4 + lru-cache + 2.7.3 + 4.1.5 + pseudomap@^1.0.2 + yallist@^2.1.2 + 5.1.1 + yallist@^3.0.2 + 6.0.0 + yallist@^4.0.0 + magic-string + 0.25.7 + sourcemap-codec@^1.4.4 + 0.25.9 + sourcemap-codec@^1.4.8 + map-age-cleaner + 0.1.2 + p-defer@^1.0.0 + 0.1.3 + p-defer@^1.0.0 + markdown-it + 14.1.0 + argparse@^2.0.1 + entities@^4.4.0 + linkify-it@^5.0.0 + mdurl@^2.0.0 + punycode.js@^2.3.1 + uc.micro@^2.1.0 + markdown-it-anchor + 8.6.7 + Scope peer|@types/markdown-it@* + Scope peer|markdown-it@* + marked + 4.3.0 + matchit + 1.0.8 + @arr/every@^1.0.0 + 1.1.0 + @arr/every@^1.0.0 + mdurl + 2.0.0 + mem + 4.0.0 + map-age-cleaner@^0.1.1 + mimic-fn@^1.0.0 + p-is-promise@^1.1.0 + 4.3.0 + map-age-cleaner@^0.1.1 + mimic-fn@^2.0.0 + p-is-promise@^2.0.0 + mime + 2.6.0 + mime-db + 1.33.0 + 1.37.0 + 1.52.0 + mime-types + 2.1.18 + mime-db@~1.33.0 + 2.1.21 + mime-db@~1.37.0 + 2.1.35 + mime-db@1.52.0 + mimic-fn + 1.2.0 + 2.1.0 + minimatch + 0.3.0 + lru-cache@2 + sigmund@~1.0.0 + 3.0.4 + brace-expansion@^1.1.7 + 3.1.2 + brace-expansion@^1.1.7 + 4.2.1 + brace-expansion@^1.1.7 + 5.1.6 + brace-expansion@^2.0.1 + minimist + 0.0.8 + 1.2.0 + 1.2.5 + 1.2.8 + mkdirp + 0.3.0 + 0.5.1 + minimist@0.0.8 + 0.5.4 + minimist@^1.2.5 + 0.5.5 + minimist@^1.2.5 + 1.0.4 + mocha + 2.5.3 + commander@2.3.0 + debug@2.2.0 + diff@1.4.0 + escape-string-regexp@1.0.2 + glob@3.2.11 + growl@1.9.2 + jade@0.26.3 + mkdirp@0.5.1 + supports-color@1.2.0 + to-iso-string@0.0.2 + 5.2.0 + browser-stdout@1.3.1 + commander@2.15.1 + debug@3.1.0 + diff@3.5.0 + escape-string-regexp@1.0.5 + glob@7.1.2 + growl@1.10.5 + he@1.1.1 + minimatch@3.0.4 + mkdirp@0.5.1 + supports-color@5.4.0 + 6.2.3 + ansi-colors@3.2.3 + browser-stdout@1.3.1 + debug@3.2.6 + diff@3.5.0 + escape-string-regexp@1.0.5 + find-up@3.0.0 + glob@7.1.3 + growl@1.10.5 + he@1.2.0 + js-yaml@3.13.1 + log-symbols@2.2.0 + minimatch@3.0.4 + mkdirp@0.5.4 + ms@2.1.1 + node-environment-flags@1.0.5 + object.assign@4.1.0 + strip-json-comments@2.0.1 + supports-color@6.0.0 + which@1.3.1 + wide-align@1.1.3 + yargs@13.3.2 + yargs-parser@13.1.2 + yargs-unparser@1.6.0 + 7.2.0 + ansi-colors@3.2.3 + browser-stdout@1.3.1 + chokidar@3.3.0 + debug@3.2.6 + diff@3.5.0 + escape-string-regexp@1.0.5 + find-up@3.0.0 + glob@7.1.3 + growl@1.10.5 + he@1.2.0 + js-yaml@3.13.1 + log-symbols@3.0.0 + minimatch@3.0.4 + mkdirp@0.5.5 + ms@2.1.1 + node-environment-flags@1.0.6 + object.assign@4.1.0 + strip-json-comments@2.0.1 + supports-color@6.0.0 + which@1.3.1 + wide-align@1.1.3 + yargs@13.3.2 + yargs-parser@13.1.2 + yargs-unparser@1.6.0 + 8.4.0 + @ungap/promise-all-settled@1.1.2 + ansi-colors@4.1.1 + browser-stdout@1.3.1 + chokidar@3.5.1 + debug@4.3.1 + diff@5.0.0 + escape-string-regexp@4.0.0 + find-up@5.0.0 + glob@7.1.6 + growl@1.10.5 + he@1.2.0 + js-yaml@4.0.0 + log-symbols@4.0.0 + minimatch@3.0.4 + ms@2.1.3 + nanoid@3.1.20 + serialize-javascript@5.0.1 + strip-json-comments@3.1.1 + supports-color@8.1.1 + which@2.0.2 + wide-align@1.1.3 + workerpool@6.1.0 + yargs@16.2.0 + yargs-parser@20.2.4 + yargs-unparser@2.0.0 + 9.2.2 + @ungap/promise-all-settled@1.1.2 + ansi-colors@4.1.1 + browser-stdout@1.3.1 + chokidar@3.5.3 + debug@4.3.3 + diff@5.0.0 + escape-string-regexp@4.0.0 + find-up@5.0.0 + glob@7.2.0 + growl@1.10.5 + he@1.2.0 + js-yaml@4.1.0 + log-symbols@4.1.0 + minimatch@4.2.1 + ms@2.1.3 + nanoid@3.3.1 + serialize-javascript@6.0.0 + strip-json-comments@3.1.1 + supports-color@8.1.1 + which@2.0.2 + workerpool@6.2.0 + yargs@16.2.0 + yargs-parser@20.2.4 + yargs-unparser@2.0.0 + mocha-headless-server + 0.1.2 + Scope peer|mocha@5.x + puppeteer@^1.6.0 + serve-handler@^3.3.0 + 0.1.4 + Scope peer|dhost@0.1.x + Scope peer|mocha@5.x + Scope peer|puppeteer@2.x + mri + 1.2.0 + ms + 0.7.1 + 2.0.0 + 2.1.1 + 2.1.2 + 2.1.3 + nanoid + 3.1.20 + 3.3.1 + nice-try + 1.0.5 + no-case + 2.3.2 + lower-case@^1.1.1 + node-environment-flags + 1.0.5 + object.getownpropertydescriptors@^2.0.3 + semver@^5.7.0 + 1.0.6 + object.getownpropertydescriptors@^2.0.3 + semver@^5.7.0 + node-fetch + 2.6.1 + 2.6.6 + whatwg-url@^5.0.0 + 2.6.7 + Scope peer|encoding@^0.1.0 + whatwg-url@^5.0.0 + 2.7.0 + Scope peer|encoding@^0.1.0 + whatwg-url@^5.0.0 + node-forge + 0.10.0 + 1.3.1 + node-releases + 1.0.0-alpha.14 + semver@^5.3.0 + 1.1.32 + semver@^5.3.0 + 2.0.14 + nodent-compiler + 3.2.11 + acorn@>= 2.5.2 <= 5.7.3 + acorn-es7-plugin@^1.1.7 + nodent-transform@^3.2.9 + source-map@^0.5.7 + 3.2.13 + acorn@>= 2.5.2 <= 5.7.5 + acorn-es7-plugin@^1.1.7 + nodent-transform@^3.2.9 + source-map@^0.5.7 + nodent-runtime + 3.2.1 + nodent-transform + 3.2.9 + normalize-path + 3.0.0 + normalize-range + 0.1.2 + npm-run-path + 2.0.2 + path-key@^2.0.0 + num2fraction + 1.2.2 + number-is-nan + 1.0.1 + nwsapi + 2.0.9 + 2.1.4 + 2.2.9 + oauth-sign + 0.9.0 + object-hash + 2.2.0 + 3.0.0 + object-inspect + 1.13.1 + object-keys + 1.1.1 + object.assign + 4.1.0 + define-properties@^1.1.2 + function-bind@^1.1.1 + has-symbols@^1.0.0 + object-keys@^1.0.11 + 4.1.5 + call-bind@^1.0.5 + define-properties@^1.2.1 + has-symbols@^1.0.3 + object-keys@^1.1.1 + object.getownpropertydescriptors + 2.1.8 + array.prototype.reduce@^1.0.6 + call-bind@^1.0.7 + define-properties@^1.2.1 + es-abstract@^1.23.2 + es-object-atoms@^1.0.0 + gopd@^1.0.1 + safe-array-concat@^1.1.2 + once + 1.4.0 + wrappy@1 + optionator + 0.8.2 + deep-is@~0.1.3 + fast-levenshtein@~2.0.4 + levn@~0.3.0 + prelude-ls@~1.1.2 + type-check@~0.3.2 + wordwrap@~1.0.0 + 0.8.3 + deep-is@~0.1.3 + fast-levenshtein@~2.0.6 + levn@~0.3.0 + prelude-ls@~1.1.2 + type-check@~0.3.2 + word-wrap@~1.2.3 + os-locale + 3.0.1 + execa@^0.10.0 + lcid@^2.0.0 + mem@^4.0.0 + 3.1.0 + execa@^1.0.0 + lcid@^2.0.0 + mem@^4.0.0 + os-tmpdir + 1.0.2 + p-defer + 1.0.0 + p-finally + 1.0.0 + p-is-promise + 1.1.0 + 2.1.0 + p-limit + 2.0.0 + p-try@^2.0.0 + 2.3.0 + p-try@^2.0.0 + 3.1.0 + yocto-queue@^0.1.0 + p-locate + 3.0.0 + p-limit@^2.0.0 + 5.0.0 + p-limit@^3.0.2 + p-try + 2.0.0 + 2.2.0 + param-case + 2.1.1 + no-case@^2.2.0 + parse-ms + 2.0.0 + 2.1.0 + parse-node-version + 1.0.1 + parse5 + 5.1.0 + 5.1.1 + path-exists + 3.0.0 + 4.0.0 + path-is-absolute + 1.0.1 + path-is-inside + 1.0.2 + path-key + 2.0.1 + path-parse + 1.0.6 + 1.0.7 + path-to-regexp + 2.2.1 + pathval + 1.1.0 + 1.1.1 + pend + 1.2.0 + performance-now + 2.1.0 + picocolors + 0.2.1 + 1.0.0 + picomatch + 2.3.0 + 2.3.1 + pn + 1.1.0 + polka + 0.5.2 + @polka/url@^0.5.0 + trouter@^2.0.1 + possible-typed-array-names + 1.0.0 + postcss + 7.0.5 + chalk@^2.4.1 + source-map@^0.6.1 + supports-color@^5.5.0 + 7.0.6 + chalk@^2.4.1 + source-map@^0.6.1 + supports-color@^5.5.0 + 7.0.7 + chalk@^2.4.1 + source-map@^0.6.1 + supports-color@^5.5.0 + 7.0.8 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.0.0 + 7.0.9 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.10 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.11 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.12 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.13 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.14 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.15 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.16 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.17 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.18 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.19 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.20 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.21 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.22 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.23 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.24 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.25 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.26 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.27 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.28 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.29 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.30 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.31 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.32 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.33 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.34 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.35 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.36 + chalk@^2.4.2 + source-map@^0.6.1 + supports-color@^6.1.0 + 7.0.37 + nanocolors@^0.2.2 + source-map@^0.6.1 + 7.0.38 + nanocolors@^0.2.2 + source-map@^0.6.1 + 7.0.39 + picocolors@^0.2.1 + source-map@^0.6.1 + postcss-value-parser + 3.3.1 + 4.2.0 + prelude-ls + 1.1.2 + pretty-ms + 4.0.0 + parse-ms@^2.0.0 + private + 0.1.8 + process-nextick-args + 2.0.0 + 2.0.1 + progress + 2.0.3 + promise-polyfill + 8.1.3 + promises-aplus-tests + 2.1.2 + mocha@^2.5.3 + sinon@^1.10.3 + underscore@~1.8.3 + proto3-json-serializer + 0.1.5 + 0.1.9 + protobufjs@^6.11.2 + 1.1.1 + protobufjs@^7.0.0 + 2.0.1 + protobufjs@^7.2.5 + protobufjs + 6.11.2 + @protobufjs/aspromise@^1.1.2 + @protobufjs/base64@^1.1.2 + @protobufjs/codegen@^2.0.4 + @protobufjs/eventemitter@^1.1.0 + @protobufjs/fetch@^1.1.0 + @protobufjs/float@^1.0.2 + @protobufjs/inquire@^1.1.0 + @protobufjs/path@^1.1.2 + @protobufjs/pool@^1.1.0 + @protobufjs/utf8@^1.1.0 + @types/long@^4.0.1 + @types/node@>=13.7.0 + long@^4.0.0 + 6.11.3 + @protobufjs/aspromise@^1.1.2 + @protobufjs/base64@^1.1.2 + @protobufjs/codegen@^2.0.4 + @protobufjs/eventemitter@^1.1.0 + @protobufjs/fetch@^1.1.0 + @protobufjs/float@^1.0.2 + @protobufjs/inquire@^1.1.0 + @protobufjs/path@^1.1.2 + @protobufjs/pool@^1.1.0 + @protobufjs/utf8@^1.1.0 + @types/long@^4.0.1 + @types/node@>=13.7.0 + long@^4.0.0 + 6.11.4 + @protobufjs/aspromise@^1.1.2 + @protobufjs/base64@^1.1.2 + @protobufjs/codegen@^2.0.4 + @protobufjs/eventemitter@^1.1.0 + @protobufjs/fetch@^1.1.0 + @protobufjs/float@^1.0.2 + @protobufjs/inquire@^1.1.0 + @protobufjs/path@^1.1.2 + @protobufjs/pool@^1.1.0 + @protobufjs/utf8@^1.1.0 + @types/long@^4.0.1 + @types/node@>=13.7.0 + long@^4.0.0 + 7.2.4 + @protobufjs/aspromise@^1.1.2 + @protobufjs/base64@^1.1.2 + @protobufjs/codegen@^2.0.4 + @protobufjs/eventemitter@^1.1.0 + @protobufjs/fetch@^1.1.0 + @protobufjs/float@^1.0.2 + @protobufjs/inquire@^1.1.0 + @protobufjs/path@^1.1.2 + @protobufjs/pool@^1.1.0 + @protobufjs/utf8@^1.1.0 + @types/node@>=13.7.0 + long@^5.0.0 + 7.2.6 + @protobufjs/aspromise@^1.1.2 + @protobufjs/base64@^1.1.2 + @protobufjs/codegen@^2.0.4 + @protobufjs/eventemitter@^1.1.0 + @protobufjs/fetch@^1.1.0 + @protobufjs/float@^1.0.2 + @protobufjs/inquire@^1.1.0 + @protobufjs/path@^1.1.2 + @protobufjs/pool@^1.1.0 + @protobufjs/utf8@^1.1.0 + @types/node@>=13.7.0 + long@^5.0.0 + protobufjs-cli + 1.1.1 + chalk@^4.0.0 + escodegen@^1.13.0 + espree@^9.0.0 + estraverse@^5.1.0 + glob@^8.0.0 + jsdoc@^4.0.0 + minimist@^1.2.0 + Scope peer|protobufjs@^7.0.0 + semver@^7.1.2 + tmp@^0.2.1 + uglify-js@^3.7.7 + proxy-from-env + 1.1.0 + pseudomap + 1.0.2 + psl + 1.1.29 + 1.4.0 + 1.9.0 + pump + 3.0.0 + end-of-stream@^1.1.0 + once@^1.3.1 + punycode + 1.4.1 + 2.1.1 + 2.3.1 + punycode.js + 2.3.1 + puppeteer + 1.20.0 + debug@^4.1.0 + extract-zip@^1.6.6 + https-proxy-agent@^2.2.1 + mime@^2.0.3 + progress@^2.0.1 + proxy-from-env@^1.0.0 + rimraf@^2.6.1 + ws@^6.1.0 + qs + 6.5.2 + 6.5.3 + randombytes + 2.1.0 + safe-buffer@^5.1.0 + readable-stream + 2.3.6 + core-util-is@~1.0.0 + inherits@~2.0.3 + isarray@~1.0.0 + process-nextick-args@~2.0.0 + safe-buffer@~5.1.1 + string_decoder@~1.1.1 + util-deprecate@~1.0.1 + 2.3.7 + core-util-is@~1.0.0 + inherits@~2.0.3 + isarray@~1.0.0 + process-nextick-args@~2.0.0 + safe-buffer@~5.1.1 + string_decoder@~1.1.1 + util-deprecate@~1.0.1 + 2.3.8 + core-util-is@~1.0.0 + inherits@~2.0.3 + isarray@~1.0.0 + process-nextick-args@~2.0.0 + safe-buffer@~5.1.1 + string_decoder@~1.1.1 + util-deprecate@~1.0.1 + 3.6.0 + inherits@^2.0.3 + string_decoder@^1.1.1 + util-deprecate@^1.0.1 + 3.6.2 + inherits@^2.0.3 + string_decoder@^1.1.1 + util-deprecate@^1.0.1 + readdirp + 3.1.1 + picomatch@^2.0.4 + 3.2.0 + picomatch@^2.0.4 + 3.5.0 + picomatch@^2.2.1 + 3.6.0 + picomatch@^2.2.1 + regenerate + 1.4.0 + 1.4.2 + regenerate-unicode-properties + 8.1.0 + regenerate@^1.4.0 + 10.1.1 + regenerate@^1.4.2 + regenerator-runtime + 0.13.3 + 0.13.11 + 0.14.1 + regenerator-transform + 0.14.1 + private@^0.1.6 + 0.15.2 + @babel/runtime@^7.8.4 + regexp-tree + 0.1.13 + regexp.prototype.flags + 1.5.2 + call-bind@^1.0.6 + define-properties@^1.2.1 + es-errors@^1.3.0 + set-function-name@^2.0.1 + regexpu-core + 4.6.0 + regenerate@^1.4.0 + regenerate-unicode-properties@^8.1.0 + regjsgen@^0.5.0 + regjsparser@^0.6.0 + unicode-match-property-ecmascript@^1.0.4 + unicode-match-property-value-ecmascript@^1.1.0 + 5.3.2 + @babel/regjsgen@^0.8.0 + regenerate@^1.4.2 + regenerate-unicode-properties@^10.1.0 + regjsparser@^0.9.1 + unicode-match-property-ecmascript@^2.0.0 + unicode-match-property-value-ecmascript@^2.1.0 + regjsgen + 0.5.0 + regjsparser + 0.6.0 + jsesc@~0.5.0 + 0.9.1 + jsesc@~0.5.0 + relateurl + 0.2.7 + remove-trailing-separator + 1.1.0 + replace-ext + 1.0.0 + 1.0.1 + request + 2.88.0 + aws-sign2@~0.7.0 + aws4@^1.8.0 + caseless@~0.12.0 + combined-stream@~1.0.6 + extend@~3.0.2 + forever-agent@~0.6.1 + form-data@~2.3.2 + har-validator@~5.1.0 + http-signature@~1.2.0 + is-typedarray@~1.0.0 + isstream@~0.1.2 + json-stringify-safe@~5.0.1 + mime-types@~2.1.19 + oauth-sign@~0.9.0 + performance-now@^2.1.0 + qs@~6.5.2 + safe-buffer@^5.1.2 + tough-cookie@~2.4.3 + tunnel-agent@^0.6.0 + uuid@^3.3.2 + 2.88.2 + aws-sign2@~0.7.0 + aws4@^1.8.0 + caseless@~0.12.0 + combined-stream@~1.0.6 + extend@~3.0.2 + forever-agent@~0.6.1 + form-data@~2.3.2 + har-validator@~5.1.3 + http-signature@~1.2.0 + is-typedarray@~1.0.0 + isstream@~0.1.2 + json-stringify-safe@~5.0.1 + mime-types@~2.1.19 + oauth-sign@~0.9.0 + performance-now@^2.1.0 + qs@~6.5.2 + safe-buffer@^5.1.2 + tough-cookie@~2.5.0 + tunnel-agent@^0.6.0 + uuid@^3.3.2 + request-promise-core + 1.1.1 + lodash@^4.13.1 + Scope peer|request@^2.34 + 1.1.2 + lodash@^4.17.11 + Scope peer|request@^2.34 + 1.1.4 + lodash@^4.17.19 + Scope peer|request@^2.34 + request-promise-native + 1.0.5 + Scope peer|request@^2.34 + request-promise-core@1.1.1 + stealthy-require@^1.1.0 + tough-cookie@>=2.3.3 + 1.0.7 + Scope peer|request@^2.34 + request-promise-core@1.1.2 + stealthy-require@^1.1.1 + tough-cookie@^2.3.3 + 1.0.9 + Scope peer|request@^2.34 + request-promise-core@1.1.4 + stealthy-require@^1.1.1 + tough-cookie@^2.3.3 + require-directory + 2.1.1 + require-main-filename + 1.0.1 + 2.0.0 + requizzle + 0.2.4 + lodash@^4.17.21 + resolve + 1.20.0 + is-core-module@^2.2.0 + path-parse@^1.0.6 + 1.22.8 + is-core-module@^2.13.0 + path-parse@^1.0.7 + supports-preserve-symlinks-flag@^1.0.0 + retry-request + 4.2.2 + debug@^4.1.1 + extend@^3.0.2 + 5.0.2 + debug@^4.1.1 + extend@^3.0.2 + 7.0.2 + @types/request@^2.48.8 + extend@^3.0.2 + teeny-request@^9.0.0 + rimraf + 2.7.1 + glob@^7.1.3 + 3.0.2 + glob@^7.1.3 + rollup + 1.32.1 + @types/estree@* + @types/node@* + acorn@^7.1.0 + 2.59.0 + fsevents@~2.3.2 + opt|fsevents@~2.3.2 + 2.79.1 + fsevents@~2.3.2 + opt|fsevents@~2.3.2 + safe-array-concat + 1.1.2 + call-bind@^1.0.7 + get-intrinsic@^1.2.4 + has-symbols@^1.0.3 + isarray@^2.0.5 + safe-buffer + 5.1.2 + 5.2.1 + safe-regex-test + 1.0.3 + call-bind@^1.0.6 + es-errors@^1.3.0 + is-regex@^1.1.4 + safer-buffer + 2.1.2 + samsam + 1.1.2 + sass + 1.22.9 + chokidar@>=2.0.0 <4.0.0 + 1.76.0 + chokidar@>=3.0.0 <4.0.0 + immutable@^4.0.0 + source-map-js@>=0.6.2 <2.0.0 + saxes + 3.1.3 + xmlchars@^1.3.1 + 3.1.11 + xmlchars@^2.1.1 + semver + 5.5.1 + 5.6.0 + 5.7.2 + 6.3.0 + 6.3.1 + 7.6.0 + lru-cache@^6.0.0 + serialize-javascript + 5.0.1 + randombytes@^2.1.0 + 6.0.0 + randombytes@^2.1.0 + serve-handler + 3.6.2 + bytes@3.0.0 + content-disposition@0.5.2 + fast-url-parser@1.1.3 + glob-slasher@1.0.1 + mime-types@2.1.18 + minimatch@3.0.4 + path-is-inside@1.0.2 + path-to-regexp@2.2.1 + set-blocking + 2.0.0 + set-function-length + 1.2.2 + define-data-property@^1.1.4 + es-errors@^1.3.0 + function-bind@^1.1.2 + get-intrinsic@^1.2.4 + gopd@^1.0.1 + has-property-descriptors@^1.0.2 + set-function-name + 2.0.2 + define-data-property@^1.1.4 + es-errors@^1.3.0 + functions-have-names@^1.2.3 + has-property-descriptors@^1.0.2 + shebang-command + 1.2.0 + shebang-regex@^1.0.0 + shebang-regex + 1.0.0 + side-channel + 1.0.6 + call-bind@^1.0.7 + es-errors@^1.3.0 + get-intrinsic@^1.2.4 + object-inspect@^1.13.1 + sigmund + 1.0.1 + signal-exit + 3.0.2 + 3.0.7 + sinon + 1.17.7 + formatio@1.1.1 + lolex@1.3.2 + samsam@1.1.2 + util@>=0.10.3 <1 + source-map + 0.5.7 + 0.6.1 + source-map-js + 1.2.0 + source-map-support + 0.5.9 + buffer-from@^1.0.0 + source-map@^0.6.0 + 0.5.21 + buffer-from@^1.0.0 + source-map@^0.6.0 + sourcemap-codec + 1.4.8 + sprintf-js + 1.0.3 + sshpk + 1.15.1 + asn1@~0.2.3 + assert-plus@^1.0.0 + bcrypt-pbkdf@^1.0.0 + dashdash@^1.12.0 + ecc-jsbn@~0.1.1 + getpass@^0.1.1 + jsbn@~0.1.0 + safer-buffer@^2.0.2 + tweetnacl@~0.14.0 + 1.18.0 + asn1@~0.2.3 + assert-plus@^1.0.0 + bcrypt-pbkdf@^1.0.0 + dashdash@^1.12.0 + ecc-jsbn@~0.1.1 + getpass@^0.1.1 + jsbn@~0.1.0 + safer-buffer@^2.0.2 + tweetnacl@~0.14.0 + stealthy-require + 1.1.1 + stream-events + 1.0.5 + stubs@^3.0.0 + stream-shift + 1.0.1 + 1.0.3 + string-width + 1.0.2 + code-point-at@^1.0.0 + is-fullwidth-code-point@^1.0.0 + strip-ansi@^3.0.0 + 2.1.1 + is-fullwidth-code-point@^2.0.0 + strip-ansi@^4.0.0 + 3.1.0 + emoji-regex@^7.0.1 + is-fullwidth-code-point@^2.0.0 + strip-ansi@^5.1.0 + 4.2.3 + emoji-regex@^8.0.0 + is-fullwidth-code-point@^3.0.0 + strip-ansi@^6.0.1 + string.prototype.trim + 1.2.9 + call-bind@^1.0.7 + define-properties@^1.2.1 + es-abstract@^1.23.0 + es-object-atoms@^1.0.0 + string.prototype.trimend + 1.0.8 + call-bind@^1.0.7 + define-properties@^1.2.1 + es-object-atoms@^1.0.0 + string.prototype.trimstart + 1.0.8 + call-bind@^1.0.7 + define-properties@^1.2.1 + es-object-atoms@^1.0.0 + string_decoder + 1.1.1 + safe-buffer@~5.1.0 + 1.3.0 + safe-buffer@~5.2.0 + strip-ansi + 3.0.1 + ansi-regex@^2.0.0 + 4.0.0 + ansi-regex@^3.0.0 + 5.2.0 + ansi-regex@^4.1.0 + 6.0.1 + ansi-regex@^5.0.1 + strip-eof + 1.0.0 + strip-json-comments + 2.0.1 + 3.1.1 + stubs + 3.0.0 + supports-color + 1.2.0 + 5.4.0 + has-flag@^3.0.0 + 5.5.0 + has-flag@^3.0.0 + 6.0.0 + has-flag@^3.0.0 + 7.2.0 + has-flag@^4.0.0 + 8.1.1 + has-flag@^4.0.0 + supports-preserve-symlinks-flag + 1.0.0 + symbol-tree + 3.2.2 + 3.2.4 + teeny-request + 7.1.3 + http-proxy-agent@^5.0.0 + https-proxy-agent@^5.0.0 + node-fetch@^2.6.1 + stream-events@^1.0.5 + uuid@^8.0.0 + 7.2.0 + http-proxy-agent@^5.0.0 + https-proxy-agent@^5.0.0 + node-fetch@^2.6.1 + stream-events@^1.0.5 + uuid@^8.0.0 + 9.0.0 + http-proxy-agent@^5.0.0 + https-proxy-agent@^5.0.0 + node-fetch@^2.6.9 + stream-events@^1.0.5 + uuid@^9.0.0 + terser + 3.10.11 + commander@~2.17.1 + source-map@~0.6.1 + source-map-support@~0.5.6 + 3.10.12 + commander@~2.17.1 + source-map@~0.6.1 + source-map-support@~0.5.6 + 3.10.13 + commander@~2.17.1 + source-map@~0.6.1 + source-map-support@~0.5.6 + 3.11.0 + commander@~2.17.1 + source-map@~0.6.1 + source-map-support@~0.5.6 + 3.12.0 + commander@~2.17.1 + source-map@~0.6.1 + source-map-support@~0.5.6 + 3.13.0 + commander@~2.17.1 + source-map@~0.6.1 + source-map-support@~0.5.6 + 3.13.1 + commander@~2.17.1 + source-map@~0.6.1 + source-map-support@~0.5.6 + 3.14.0 + commander@~2.17.1 + source-map@~0.6.1 + source-map-support@~0.5.6 + 3.14.1 + commander@~2.17.1 + source-map@~0.6.1 + source-map-support@~0.5.6 + 3.16.0 + commander@~2.17.1 + source-map@~0.6.1 + source-map-support@~0.5.9 + 3.16.1 + commander@~2.17.1 + source-map@~0.6.1 + source-map-support@~0.5.9 + 3.17.0 + commander@^2.19.0 + source-map@~0.6.1 + source-map-support@~0.5.10 + 4.8.1 + commander@^2.20.0 + source-map@~0.6.1 + source-map-support@~0.5.12 + time-stamp + 1.1.0 + tmp + 0.0.33 + os-tmpdir@~1.0.2 + 0.2.3 + to-fast-properties + 2.0.0 + to-iso-string + 0.0.2 + to-regex-range + 5.0.1 + is-number@^7.0.0 + tough-cookie + 2.3.3 + punycode@^1.4.1 + 2.3.4 + punycode@^1.4.1 + 2.4.2 + psl@^1.1.24 + punycode@^1.4.1 + 2.4.3 + psl@^1.1.24 + punycode@^1.4.1 + 2.5.0 + psl@^1.1.28 + punycode@^2.1.1 + 3.0.1 + ip-regex@^2.1.0 + psl@^1.1.28 + punycode@^2.1.1 + toxic + 1.0.1 + lodash@^4.17.10 + tr46 + 0.0.3 + 1.0.1 + punycode@^2.1.0 + trim-right + 1.0.1 + trouter + 2.0.1 + matchit@^1.0.0 + tslib + 2.3.1 + 2.6.2 + tunnel-agent + 0.6.0 + safe-buffer@^5.0.1 + tweetnacl + 0.14.5 + type-check + 0.3.2 + prelude-ls@~1.1.2 + type-detect + 4.0.8 + typed-array-buffer + 1.0.2 + call-bind@^1.0.7 + es-errors@^1.3.0 + is-typed-array@^1.1.13 + typed-array-byte-length + 1.0.1 + call-bind@^1.0.7 + for-each@^0.3.3 + gopd@^1.0.1 + has-proto@^1.0.3 + is-typed-array@^1.1.13 + typed-array-byte-offset + 1.0.2 + available-typed-arrays@^1.0.7 + call-bind@^1.0.7 + for-each@^0.3.3 + gopd@^1.0.1 + has-proto@^1.0.3 + is-typed-array@^1.1.13 + typed-array-length + 1.0.6 + call-bind@^1.0.7 + for-each@^0.3.3 + gopd@^1.0.1 + has-proto@^1.0.3 + is-typed-array@^1.1.13 + possible-typed-array-names@^1.0.0 + typedarray + 0.0.6 + uc.micro + 2.1.0 + uglify-js + 3.6.0 + commander@~2.20.0 + source-map@~0.6.1 + 3.17.4 + unbox-primitive + 1.0.2 + call-bind@^1.0.2 + has-bigints@^1.0.2 + has-symbols@^1.0.3 + which-boxed-primitive@^1.0.2 + underscore + 1.8.3 + 1.13.6 + undici-types + 5.26.5 + unicode-canonical-property-names-ecmascript + 1.0.4 + 2.0.0 + unicode-match-property-ecmascript + 1.0.4 + unicode-canonical-property-names-ecmascript@^1.0.4 + unicode-property-aliases-ecmascript@^1.0.4 + 2.0.0 + unicode-canonical-property-names-ecmascript@^2.0.0 + unicode-property-aliases-ecmascript@^2.0.0 + unicode-match-property-value-ecmascript + 1.1.0 + 2.1.0 + unicode-property-aliases-ecmascript + 1.0.5 + 2.1.0 + unistore + 3.4.1 + 3.5.2 + update-browserslist-db + 1.0.15 + Scope peer|browserslist@>= 4.21.0 + escalade@^3.1.2 + picocolors@^1.0.0 + upper-case + 1.1.3 + uri-js + 4.4.1 + punycode@^2.1.0 + util + 0.12.5 + inherits@^2.0.3 + is-arguments@^1.0.4 + is-generator-function@^1.0.7 + is-typed-array@^1.1.3 + which-typed-array@^1.1.2 + util-deprecate + 1.0.2 + uuid + 3.3.2 + 3.4.0 + 8.3.2 + 9.0.1 + verror + 1.10.0 + assert-plus@^1.0.0 + core-util-is@1.0.2 + extsprintf@^1.2.0 + vinyl + 2.2.0 + clone@^2.1.1 + clone-buffer@^1.0.0 + clone-stats@^1.0.0 + cloneable-readable@^1.0.0 + remove-trailing-separator@^1.0.1 + replace-ext@^1.0.0 + 2.2.1 + clone@^2.1.1 + clone-buffer@^1.0.0 + clone-stats@^1.0.0 + cloneable-readable@^1.0.0 + remove-trailing-separator@^1.0.1 + replace-ext@^1.0.0 + vinyl-sourcemaps-apply + 0.2.1 + source-map@^0.5.1 + w3c-hr-time + 1.0.1 + browser-process-hrtime@^0.1.2 + 1.0.2 + browser-process-hrtime@^1.0.0 + w3c-xmlserializer + 1.1.2 + domexception@^1.0.1 + webidl-conversions@^4.0.2 + xml-name-validator@^3.0.0 + web-animations-js + 2.3.1 + 2.3.2 + webidl-conversions + 3.0.1 + 4.0.2 + websocket-driver + 0.7.4 + http-parser-js@>=0.5.1 + safe-buffer@>=5.1.0 + websocket-extensions@>=0.1.1 + websocket-extensions + 0.1.4 + whatwg-encoding + 1.0.5 + iconv-lite@0.4.24 + whatwg-fetch + 2.0.4 + 3.0.0 + 3.6.20 + whatwg-mimetype + 2.2.0 + 2.3.0 + whatwg-url + 5.0.0 + tr46@~0.0.3 + webidl-conversions@^3.0.0 + 7.0.0 + lodash.sortby@^4.7.0 + tr46@^1.0.1 + webidl-conversions@^4.0.2 + 7.1.0 + lodash.sortby@^4.7.0 + tr46@^1.0.1 + webidl-conversions@^4.0.2 + which + 1.3.1 + isexe@^2.0.0 + 2.0.2 + isexe@^2.0.0 + which-boxed-primitive + 1.0.2 + is-bigint@^1.0.1 + is-boolean-object@^1.1.0 + is-number-object@^1.0.4 + is-string@^1.0.5 + is-symbol@^1.0.3 + which-module + 2.0.0 + 2.0.1 + which-typed-array + 1.1.15 + available-typed-arrays@^1.0.7 + call-bind@^1.0.7 + for-each@^0.3.3 + gopd@^1.0.1 + has-tostringtag@^1.0.2 + wide-align + 1.1.3 + string-width@^1.0.2 || 2 + word-wrap + 1.2.5 + wordwrap + 1.0.0 + workerpool + 6.1.0 + 6.2.0 + wrap-ansi + 2.1.0 + string-width@^1.0.1 + strip-ansi@^3.0.1 + 5.1.0 + ansi-styles@^3.2.0 + string-width@^3.0.0 + strip-ansi@^5.0.0 + 7.0.0 + ansi-styles@^4.0.0 + string-width@^4.1.0 + strip-ansi@^6.0.0 + wrappy + 1.0.2 + ws + 6.2.1 + async-limiter@~1.0.0 + 6.2.2 + async-limiter@~1.0.0 + 7.1.2 + async-limiter@^1.0.0 + 7.5.9 + Scope peer|bufferutil@^4.0.1 + Scope peer|utf-8-validate@^5.0.2 + xml-name-validator + 3.0.0 + xmlchars + 1.3.1 + 2.2.0 + xmlcreate + 2.0.4 + xmlhttprequest + 1.8.0 + xregexp + 4.0.0 + y18n + 4.0.0 + 4.0.3 + 5.0.8 + yallist + 2.1.2 + 3.1.1 + 4.0.0 + yargs + 12.0.2 + cliui@^4.0.0 + decamelize@^2.0.0 + find-up@^3.0.0 + get-caller-file@^1.0.1 + os-locale@^3.0.0 + require-directory@^2.1.1 + require-main-filename@^1.0.1 + set-blocking@^2.0.0 + string-width@^2.0.0 + which-module@^2.0.0 + y18n@^3.2.1 || ^4.0.0 + yargs-parser@^10.1.0 + 12.0.5 + cliui@^4.0.0 + decamelize@^1.2.0 + find-up@^3.0.0 + get-caller-file@^1.0.1 + os-locale@^3.0.0 + require-directory@^2.1.1 + require-main-filename@^1.0.1 + set-blocking@^2.0.0 + string-width@^2.0.0 + which-module@^2.0.0 + y18n@^3.2.1 || ^4.0.0 + yargs-parser@^11.1.1 + 13.3.2 + cliui@^5.0.0 + find-up@^3.0.0 + get-caller-file@^2.0.1 + require-directory@^2.1.1 + require-main-filename@^2.0.0 + set-blocking@^2.0.0 + string-width@^3.0.0 + which-module@^2.0.0 + y18n@^4.0.0 + yargs-parser@^13.1.2 + 16.2.0 + cliui@^7.0.2 + escalade@^3.1.1 + get-caller-file@^2.0.5 + require-directory@^2.1.1 + string-width@^4.2.0 + y18n@^5.0.5 + yargs-parser@^20.2.2 + 17.7.2 + cliui@^8.0.1 + escalade@^3.1.1 + get-caller-file@^2.0.5 + require-directory@^2.1.1 + string-width@^4.2.3 + y18n@^5.0.5 + yargs-parser@^21.1.1 + yargs-parser + 10.1.0 + camelcase@^4.1.0 + 11.1.1 + camelcase@^5.0.0 + decamelize@^1.2.0 + 13.1.2 + camelcase@^5.0.0 + decamelize@^1.2.0 + 20.2.4 + 20.2.9 + 21.1.1 + yargs-unparser + 1.6.0 + flat@^4.1.0 + lodash@^4.17.15 + yargs@^13.3.0 + 2.0.0 + camelcase@^6.0.0 + decamelize@^4.0.0 + flat@^5.0.2 + is-plain-obj@^2.1.0 + yauzl + 2.10.0 + buffer-crc32@~0.2.3 + fd-slicer@~1.1.0 + yocto-queue + 0.1.0 +vulns: + - schema_version: 1.6.0 + id: GHSA-67hx-6x53-jw92 + modified: 2024-04-04T14:26:10Z + published: 2023-10-16T13:55:36Z + aliases: + - CVE-2023-45133 + summary: Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code + details: |- + ### Impact + + Using Babel to compile code that was specifically crafted by an attacker can lead to arbitrary code execution during compilation, when using plugins that rely on the `path.evaluate()`or `path.evaluateTruthy()` internal Babel methods. + + Known affected plugins are: + - `@babel/plugin-transform-runtime` + - `@babel/preset-env` when using its [`useBuiltIns`](https://babeljs.io/docs/babel-preset-env#usebuiltins) option + - Any "polyfill provider" plugin that depends on `@babel/helper-define-polyfill-provider`, such as `babel-plugin-polyfill-corejs3`, `babel-plugin-polyfill-corejs2`, `babel-plugin-polyfill-es-shims`, `babel-plugin-polyfill-regenerator` + + No other plugins under the `@babel/` namespace are impacted, but third-party plugins might be. + + **Users that only compile trusted code are not impacted.** + + ### Patches + + The vulnerability has been fixed in `@babel/traverse@7.23.2`. + + Babel 6 does not receive security fixes anymore (see [Babel's security policy](https://github.com/babel/babel/security/policy)), hence there is no patch planned for `babel-traverse@6`. + + ### Workarounds + + - Upgrade `@babel/traverse` to v7.23.2 or higher. You can do this by deleting it from your package manager's lockfile and re-installing the dependencies. `@babel/core` >=7.23.2 will automatically pull in a non-vulnerable version. + - If you cannot upgrade `@babel/traverse` and are using one of the affected packages mentioned above, upgrade them to their latest version to avoid triggering the vulnerable code path in affected `@babel/traverse` versions: + - `@babel/plugin-transform-runtime` v7.23.2 + - `@babel/preset-env` v7.23.2 + - `@babel/helper-define-polyfill-provider` v0.4.3 + - `babel-plugin-polyfill-corejs2` v0.4.6 + - `babel-plugin-polyfill-corejs3` v0.8.5 + - `babel-plugin-polyfill-es-shims` v0.10.0 + - `babel-plugin-polyfill-regenerator` v0.5.3 + affected: + - package: + ecosystem: npm + name: '@babel/traverse' + purl: pkg:npm/%40babel/traverse + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 7.23.2 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2023/10/GHSA-67hx-6x53-jw92/GHSA-67hx-6x53-jw92.json + - package: + ecosystem: npm + name: '@babel/traverse' + purl: pkg:npm/%40babel/traverse + ranges: + - type: SEMVER + events: + - introduced: 8.0.0-alpha.0 + - fixed: 8.0.0-alpha.4 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2023/10/GHSA-67hx-6x53-jw92/GHSA-67hx-6x53-jw92.json + - package: + ecosystem: npm + name: babel-traverse + purl: pkg:npm/babel-traverse + ranges: + - type: SEMVER + events: + - introduced: "0" + database_specific: + last_known_affected_version_range: < 7.23.2 + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2023/10/GHSA-67hx-6x53-jw92/GHSA-67hx-6x53-jw92.json + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H + references: + - type: WEB + url: https://github.com/babel/babel/security/advisories/GHSA-67hx-6x53-jw92 + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2023-45133 + - type: WEB + url: https://github.com/babel/babel/pull/16033 + - type: WEB + url: https://github.com/babel/babel/commit/b13376b346946e3f62fc0848c1d2a23223314c82 + - type: WEB + url: https://babeljs.io/blog/2023/10/16/cve-2023-45133 + - type: PACKAGE + url: https://github.com/babel/babel + - type: WEB + url: https://github.com/babel/babel/releases/tag/v7.23.2 + - type: WEB + url: https://github.com/babel/babel/releases/tag/v8.0.0-alpha.4 + - type: WEB + url: https://lists.debian.org/debian-lts-announce/2023/10/msg00026.html + - type: WEB + url: https://www.debian.org/security/2023/dsa-5528 + database_specific: + cwe_ids: + - CWE-184 + - CWE-697 + github_reviewed: true + github_reviewed_at: "2023-10-16T13:55:36Z" + nvd_published_at: "2023-10-12T17:15:09Z" + severity: CRITICAL + - schema_version: 1.6.0 + id: GHSA-fpm5-vv97-jfwg + modified: 2023-11-08T04:04:09.238673Z + published: 2021-05-18T01:57:24Z + aliases: + - CVE-2020-7765 + - SNYK-JS-FIREBASEUTIL-1038324 + summary: Uncontrolled Resource Consumption in firebase + details: This affects the package @firebase/util before 0.3.4. This vulnerability relates to the deepExtend function within the DeepCopy.ts file. Depending on if user input is provided, an attacker can overwrite and pollute the object prototype of a program. + affected: + - package: + ecosystem: npm + name: '@firebase/util' + purl: pkg:npm/%40firebase/util + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 0.3.4 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/05/GHSA-fpm5-vv97-jfwg/GHSA-fpm5-vv97-jfwg.json + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2020-7765 + - type: WEB + url: https://github.com/firebase/firebase-js-sdk/pull/4001 + - type: WEB + url: https://github.com/firebase/firebase-js-sdk/commit/9cf727fcc3d049551b16ae0698ac33dc2fe45ada + - type: WEB + url: https://snyk.io/vuln/SNYK-JS-FIREBASEUTIL-1038324 + database_specific: + cwe_ids: + - CWE-400 + github_reviewed: true + github_reviewed_at: "2021-04-15T21:39:07Z" + nvd_published_at: "2020-11-16T12:15:00Z" + severity: MODERATE + - schema_version: 1.6.0 + id: GHSA-pp75-xfpw-37g9 + modified: 2023-11-08T04:04:09.421292Z + published: 2021-05-10T19:16:14Z + aliases: + - CVE-2020-7768 + - SNYK-JAVA-ORGWEBJARSNPM-1038819 + - SNYK-JS-GRPC-598671 + - SNYK-JS-GRPCGRPCJS-1038818 + summary: Prototype pollution in grpc and @grpc/grpc-js + details: '"The package grpc before 1.24.4 and the package @grpc/grpc-js before 1.1.8 are vulnerable to Prototype Pollution via loadPackageDefinition."' + affected: + - package: + ecosystem: npm + name: grpc + purl: pkg:npm/grpc + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 1.24.4 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/05/GHSA-pp75-xfpw-37g9/GHSA-pp75-xfpw-37g9.json + - package: + ecosystem: npm + name: '@grpc/grpc-js' + purl: pkg:npm/%40grpc/grpc-js + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 1.1.8 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/05/GHSA-pp75-xfpw-37g9/GHSA-pp75-xfpw-37g9.json + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2020-7768 + - type: WEB + url: https://github.com/grpc/grpc-node/pull/1605 + - type: WEB + url: https://github.com/grpc/grpc-node/pull/1606 + - type: WEB + url: https://github.com/grpc/grpc-node/releases/tag/grpc%401.24.4 + - type: WEB + url: https://snyk.io/vuln/SNYK-JAVA-ORGWEBJARSNPM-1038819 + - type: WEB + url: https://snyk.io/vuln/SNYK-JS-GRPC-598671 + - type: WEB + url: https://snyk.io/vuln/SNYK-JS-GRPCGRPCJS-1038818 + - type: WEB + url: https://www.npmjs.com/package/@grpc/grpc-js + - type: WEB + url: https://www.npmjs.com/package/grpc + database_specific: + cwe_ids: + - CWE-1321 + - CWE-915 + github_reviewed: true + github_reviewed_at: "2021-04-19T22:57:05Z" + nvd_published_at: "2020-11-11T11:15:00Z" + severity: HIGH + - schema_version: 1.6.0 + id: GHSA-6chw-6frg-f759 + modified: 2021-08-23T15:10:32Z + published: 2020-04-03T21:48:38Z + summary: Regular Expression Denial of Service in Acorn + details: |- + Affected versions of acorn are vulnerable to Regular Expression Denial of Service. + A regex in the form of /[x-\ud800]/u causes the parser to enter an infinite loop. + The string is not valid UTF16 which usually results in it being sanitized before reaching the parser. + If an application processes untrusted input and passes it directly to acorn, + attackers may leverage the vulnerability leading to Denial of Service. + affected: + - package: + ecosystem: npm + name: acorn + purl: pkg:npm/acorn + ranges: + - type: SEMVER + events: + - introduced: 5.5.0 + - fixed: 5.7.4 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/04/GHSA-6chw-6frg-f759/GHSA-6chw-6frg-f759.json + - package: + ecosystem: npm + name: acorn + purl: pkg:npm/acorn + ranges: + - type: SEMVER + events: + - introduced: 6.0.0 + - fixed: 6.4.1 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/04/GHSA-6chw-6frg-f759/GHSA-6chw-6frg-f759.json + - package: + ecosystem: npm + name: acorn + purl: pkg:npm/acorn + ranges: + - type: SEMVER + events: + - introduced: 7.0.0 + - fixed: 7.1.1 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/04/GHSA-6chw-6frg-f759/GHSA-6chw-6frg-f759.json + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H + references: + - type: WEB + url: https://github.com/acornjs/acorn/issues/929 + - type: WEB + url: https://github.com/acornjs/acorn/commit/793c0e569ed1158672e3a40aeed1d8518832b802 + - type: WEB + url: https://snyk.io/vuln/SNYK-JS-ACORN-559469 + - type: WEB + url: https://www.npmjs.com/advisories/1488 + database_specific: + cwe_ids: + - CWE-400 + github_reviewed: true + github_reviewed_at: "2020-04-03T21:42:14Z" + nvd_published_at: null + severity: HIGH + - schema_version: 1.6.0 + id: GHSA-v88g-cgmw-v5xw + modified: 2023-11-08T04:02:36.87099Z + published: 2022-02-10T23:30:59Z + aliases: + - CVE-2020-15366 + summary: Prototype Pollution in Ajv + details: An issue was discovered in ajv.validate() in Ajv (aka Another JSON Schema Validator) 6.12.2. A carefully crafted JSON schema could be provided that allows execution of other code by prototype pollution. (While untrusted schemas are recommended against, the worst case of an untrusted schema should be a denial of service, not execution of code.) + affected: + - package: + ecosystem: npm + name: ajv + purl: pkg:npm/ajv + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 6.12.3 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/02/GHSA-v88g-cgmw-v5xw/GHSA-v88g-cgmw-v5xw.json + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2020-15366 + - type: WEB + url: https://github.com/ajv-validator/ajv/commit/65b2f7d76b190ac63a0d4e9154c712d7aa37049f + - type: PACKAGE + url: https://github.com/ajv-validator/ajv + - type: WEB + url: https://github.com/ajv-validator/ajv/releases/tag/v6.12.3 + - type: WEB + url: https://github.com/ajv-validator/ajv/tags + - type: WEB + url: https://hackerone.com/bugs?subject=user&report_id=894259 + database_specific: + cwe_ids: + - CWE-1321 + - CWE-915 + github_reviewed: true + github_reviewed_at: "2021-05-10T21:23:41Z" + nvd_published_at: "2020-07-15T20:15:00Z" + severity: MODERATE + - schema_version: 1.6.0 + id: GHSA-93q8-gq69-wqmw + modified: 2023-11-08T04:06:25.310142Z + published: 2021-09-20T20:20:09Z + aliases: + - CVE-2021-3807 + summary: Inefficient Regular Expression Complexity in chalk/ansi-regex + details: |- + ansi-regex is vulnerable to Inefficient Regular Expression Complexity which could lead to a denial of service when parsing invalid ANSI escape codes. + + **Proof of Concept** + ```js + import ansiRegex from 'ansi-regex'; + for(var i = 1; i <= 50000; i++) { + var time = Date.now(); + var attack_str = "\u001B["+";".repeat(i*10000); + ansiRegex().test(attack_str) + var time_cost = Date.now() - time; + console.log("attack_str.length: " + attack_str.length + ": " + time_cost+" ms") + } + ``` + The ReDOS is mainly due to the sub-patterns `[[\\]()#;?]*` and `(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*` + affected: + - package: + ecosystem: npm + name: ansi-regex + purl: pkg:npm/ansi-regex + ranges: + - type: SEMVER + events: + - introduced: 6.0.0 + - fixed: 6.0.1 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/09/GHSA-93q8-gq69-wqmw/GHSA-93q8-gq69-wqmw.json + - package: + ecosystem: npm + name: ansi-regex + purl: pkg:npm/ansi-regex + ranges: + - type: SEMVER + events: + - introduced: 5.0.0 + - fixed: 5.0.1 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/09/GHSA-93q8-gq69-wqmw/GHSA-93q8-gq69-wqmw.json + - package: + ecosystem: npm + name: ansi-regex + purl: pkg:npm/ansi-regex + ranges: + - type: SEMVER + events: + - introduced: 4.0.0 + - fixed: 4.1.1 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/09/GHSA-93q8-gq69-wqmw/GHSA-93q8-gq69-wqmw.json + - package: + ecosystem: npm + name: ansi-regex + purl: pkg:npm/ansi-regex + ranges: + - type: SEMVER + events: + - introduced: 3.0.0 + - fixed: 3.0.1 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/09/GHSA-93q8-gq69-wqmw/GHSA-93q8-gq69-wqmw.json + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2021-3807 + - type: WEB + url: https://github.com/chalk/ansi-regex/issues/38#issuecomment-924086311 + - type: WEB + url: https://github.com/chalk/ansi-regex/issues/38#issuecomment-925924774 + - type: WEB + url: https://github.com/chalk/ansi-regex/commit/419250fa510bf31b4cc672e76537a64f9332e1f1 + - type: WEB + url: https://github.com/chalk/ansi-regex/commit/75a657da7af875b2e2724fd6331bf0a4b23d3c9a + - type: WEB + url: https://github.com/chalk/ansi-regex/commit/8d1d7cdb586269882c4bdc1b7325d0c58c8f76f9 + - type: WEB + url: https://github.com/chalk/ansi-regex/commit/c3c0b3f2736b9c01feec0fef33980c43720dcde8 + - type: WEB + url: https://app.snyk.io/vuln/SNYK-JS-ANSIREGEX-1583908 + - type: PACKAGE + url: https://github.com/chalk/ansi-regex + - type: WEB + url: https://github.com/chalk/ansi-regex/releases/tag/v6.0.1 + - type: WEB + url: https://huntr.dev/bounties/5b3cf33b-ede0-4398-9974-800876dfd994 + - type: WEB + url: https://security.netapp.com/advisory/ntap-20221014-0002 + - type: WEB + url: https://www.oracle.com/security-alerts/cpuapr2022.html + database_specific: + cwe_ids: + - CWE-1333 + - CWE-697 + github_reviewed: true + github_reviewed_at: "2021-09-20T18:56:22Z" + nvd_published_at: "2021-09-17T07:15:00Z" + severity: HIGH + - schema_version: 1.6.0 + id: GHSA-832h-xg76-4gv6 + modified: 2023-11-08T03:59:15.193726Z + published: 2018-01-29T15:50:46Z + aliases: + - CVE-2017-18077 + summary: ReDoS in brace-expansion + details: |- + Affected versions of `brace-expansion` are vulnerable to a regular expression denial of service condition. + + ## Proof of Concept + + ``` + var expand = require('brace-expansion'); + expand('{,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,\n}'); + ``` + + + ## Recommendation + + Update to version 1.1.7 or later. + affected: + - package: + ecosystem: npm + name: brace-expansion + purl: pkg:npm/brace-expansion + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 1.1.7 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2018/01/GHSA-832h-xg76-4gv6/GHSA-832h-xg76-4gv6.json + severity: + - type: CVSS_V3 + score: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2017-18077 + - type: WEB + url: https://github.com/juliangruber/brace-expansion/issues/33 + - type: WEB + url: https://github.com/juliangruber/brace-expansion/pull/35 + - type: WEB + url: https://github.com/juliangruber/brace-expansion/pull/35/commits/b13381281cead487cbdbfd6a69fb097ea5e456c3 + - type: WEB + url: https://bugs.debian.org/862712 + - type: ADVISORY + url: https://github.com/advisories/GHSA-832h-xg76-4gv6 + - type: PACKAGE + url: https://github.com/juliangruber/brace-expansion + - type: WEB + url: https://www.npmjs.com/advisories/338 + database_specific: + cwe_ids: + - CWE-1333 + github_reviewed: true + github_reviewed_at: "2020-06-16T21:24:01Z" + nvd_published_at: null + severity: HIGH + - schema_version: 1.6.0 + id: GHSA-cwfw-4gq5-mrqx + modified: 2023-11-08T03:59:45.345388Z + published: 2022-01-06T20:42:03Z + aliases: + - CVE-2018-1109 + summary: Regular Expression Denial of Service (ReDoS) in braces + details: A vulnerability was found in Braces versions prior to 2.3.1. Affected versions of this package are vulnerable to Regular Expression Denial of Service (ReDoS) attacks. + affected: + - package: + ecosystem: npm + name: braces + purl: pkg:npm/braces + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 2.3.1 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/01/GHSA-cwfw-4gq5-mrqx/GHSA-cwfw-4gq5-mrqx.json + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2018-1109 + - type: WEB + url: https://github.com/micromatch/braces/commit/abdafb0cae1e0c00f184abbadc692f4eaa98f451 + - type: WEB + url: https://bugzilla.redhat.com/show_bug.cgi?id=1547272 + - type: WEB + url: https://snyk.io/vuln/npm:braces:20180219 + database_specific: + cwe_ids: + - CWE-400 + github_reviewed: true + github_reviewed_at: "2021-03-31T21:35:00Z" + nvd_published_at: "2021-03-30T02:15:00Z" + severity: LOW + - schema_version: 1.6.0 + id: GHSA-g95f-p29q-9xw4 + modified: 2021-08-04T21:35:07Z + published: 2019-06-06T15:30:30Z + summary: Regular Expression Denial of Service in braces + details: |- + Versions of `braces` prior to 2.3.1 are vulnerable to Regular Expression Denial of Service (ReDoS). Untrusted input may cause catastrophic backtracking while matching regular expressions. This can cause the application to be unresponsive leading to Denial of Service. + + + ## Recommendation + + Upgrade to version 2.3.1 or higher. + affected: + - package: + ecosystem: npm + name: braces + purl: pkg:npm/braces + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 2.3.1 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2019/06/GHSA-g95f-p29q-9xw4/GHSA-g95f-p29q-9xw4.json + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L + references: + - type: WEB + url: https://github.com/micromatch/braces/commit/abdafb0cae1e0c00f184abbadc692f4eaa98f451 + - type: WEB + url: https://snyk.io/vuln/npm:braces:20180219 + - type: WEB + url: https://www.npmjs.com/advisories/786 + database_specific: + cwe_ids: + - CWE-185 + - CWE-400 + github_reviewed: true + github_reviewed_at: "2019-06-06T09:40:51Z" + nvd_published_at: null + severity: LOW + - schema_version: 1.6.0 + id: GHSA-w8qv-6jwh-64r5 + modified: 2023-11-08T04:05:05.369408Z + published: 2021-05-24T19:52:40Z + aliases: + - CVE-2021-23364 + - SNYK-JAVA-ORGWEBJARSNPM-1277182 + - SNYK-JS-BROWSERSLIST-1090194 + summary: Regular Expression Denial of Service in browserslist + details: The package browserslist from 4.0.0 and before 4.16.5 are vulnerable to Regular Expression Denial of Service (ReDoS) during parsing of queries. + affected: + - package: + ecosystem: npm + name: browserslist + purl: pkg:npm/browserslist + ranges: + - type: SEMVER + events: + - introduced: 4.0.0 + - fixed: 4.16.5 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/05/GHSA-w8qv-6jwh-64r5/GHSA-w8qv-6jwh-64r5.json + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2021-23364 + - type: WEB + url: https://github.com/browserslist/browserslist/pull/593 + - type: WEB + url: https://github.com/browserslist/browserslist/commit/c091916910dfe0b5fd61caad96083c6709b02d98 + - type: WEB + url: https://github.com/browserslist/browserslist/blob/e82f32d1d4100d6bc79ea0b6b6a2d281a561e33c/index.js%23L472-L474 + - type: WEB + url: https://snyk.io/vuln/SNYK-JAVA-ORGWEBJARSNPM-1277182 + - type: WEB + url: https://snyk.io/vuln/SNYK-JS-BROWSERSLIST-1090194 + database_specific: + cwe_ids: + - CWE-1333 + - CWE-400 + github_reviewed: true + github_reviewed_at: "2021-05-20T22:03:36Z" + nvd_published_at: "2021-04-28T16:15:00Z" + severity: MODERATE + - schema_version: 1.6.0 + id: GHSA-wxhq-pm8v-cw75 + modified: 2020-08-31T18:35:40Z + published: 2019-06-05T20:50:16Z + summary: Regular Expression Denial of Service in clean-css + details: |- + Version of `clean-css` prior to 4.1.11 are vulnerable to Regular Expression Denial of Service (ReDoS). Untrusted input may cause catastrophic backtracking while matching regular expressions. This can cause the application to be unresponsive leading to Denial of Service. + + + ## Recommendation + + Upgrade to version 4.1.11 or higher. + affected: + - package: + ecosystem: npm + name: clean-css + purl: pkg:npm/clean-css + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 4.1.11 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2019/06/GHSA-wxhq-pm8v-cw75/GHSA-wxhq-pm8v-cw75.json + references: + - type: WEB + url: https://github.com/jakubpawlowicz/clean-css/commit/2929bafbf8cdf7dccb24e0949c70833764fa87e3 + - type: WEB + url: https://www.npmjs.com/advisories/785 + database_specific: + cwe_ids: + - CWE-1333 + github_reviewed: true + github_reviewed_at: "2019-06-05T20:49:47Z" + nvd_published_at: null + severity: LOW + - schema_version: 1.6.0 + id: GHSA-g74r-ffvr-5q9f + modified: 2020-08-31T18:29:17Z + published: 2019-06-03T17:26:44Z + summary: Memory Exposure in concat-stream + details: |- + Versions of `concat-stream` before 1.5.2 are vulnerable to memory exposure if userp provided input is passed into `write()` + + Versions <1.3.0 are not affected due to not using unguarded Buffer constructor. + + + + ## Recommendation + + Update to version 1.5.2, 1.4.11, 1.3.2 or later. + + If you are unable to update make sure user provided input into the `write()` function is not a number. + affected: + - package: + ecosystem: npm + name: concat-stream + purl: pkg:npm/concat-stream + ranges: + - type: SEMVER + events: + - introduced: 1.5.0 + - fixed: 1.5.2 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2019/06/GHSA-g74r-ffvr-5q9f/GHSA-g74r-ffvr-5q9f.json + - package: + ecosystem: npm + name: concat-stream + purl: pkg:npm/concat-stream + ranges: + - type: SEMVER + events: + - introduced: 1.4.0 + - fixed: 1.4.11 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2019/06/GHSA-g74r-ffvr-5q9f/GHSA-g74r-ffvr-5q9f.json + - package: + ecosystem: npm + name: concat-stream + purl: pkg:npm/concat-stream + ranges: + - type: SEMVER + events: + - introduced: 1.3.0 + - fixed: 1.3.2 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2019/06/GHSA-g74r-ffvr-5q9f/GHSA-g74r-ffvr-5q9f.json + references: + - type: WEB + url: https://github.com/maxogden/concat-stream/pull/47 + - type: WEB + url: https://github.com/maxogden/concat-stream/pull/47/commits/3e285ba5e5b10b7c98552217f5c1023829efe69e + - type: WEB + url: https://gist.github.com/ChALkeR/c2d2fd3f1d72d51ad883df195be03a85 + - type: WEB + url: https://www.npmjs.com/advisories/597 + database_specific: + cwe_ids: + - CWE-200 + github_reviewed: true + github_reviewed_at: "2019-06-03T17:26:24Z" + nvd_published_at: null + severity: MODERATE + - schema_version: 1.6.0 + id: GHSA-chwr-hf3w-c984 + modified: 2023-11-08T04:04:08.690471Z + published: 2021-05-10T18:44:38Z + aliases: + - CVE-2020-7755 + summary: Regular Expression Denial of Service in dat.gui + details: All versions of package dat.gui are vulnerable to Regular Expression Denial of Service (ReDoS) via specifically crafted rgb and rgba values. + affected: + - package: + ecosystem: npm + name: dat.gui + purl: pkg:npm/dat.gui + ranges: + - type: SEMVER + events: + - introduced: "0" + - last_affected: 0.7.7 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/05/GHSA-chwr-hf3w-c984/GHSA-chwr-hf3w-c984.json + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2020-7755 + - type: WEB + url: https://github.com/dataarts/dat.gui/issues/278 + - type: WEB + url: https://github.com/dataarts/dat.gui/pull/279 + - type: WEB + url: https://snyk.io/vuln/SNYK-JS-DATGUI-1016275 + - type: WEB + url: https://www.npmjs.com/package/dat.gui + database_specific: + cwe_ids: + - CWE-400 + github_reviewed: true + github_reviewed_at: "2021-04-21T17:36:43Z" + nvd_published_at: "2020-10-27T18:15:00Z" + severity: HIGH + - schema_version: 1.6.0 + id: GHSA-9vvw-cc9w-f27h + modified: 2023-11-08T03:59:17.780578Z + published: 2023-01-09T12:30:19Z + aliases: + - CVE-2017-20165 + summary: debug Inefficient Regular Expression Complexity vulnerability + details: A vulnerability classified as problematic has been found in debug-js debug up to 3.0.x. This affects the function useColors of the file src/node.js. The manipulation of the argument str leads to inefficient regular expression complexity. Upgrading to version 3.1.0 is able to address this issue. The name of the patch is c38a0166c266a679c8de012d4eaccec3f944e685. It is recommended to upgrade the affected component. The identifier VDB-217665 was assigned to this vulnerability. The patch has been backported to the 2.6.x branch in version 2.6.9. + affected: + - package: + ecosystem: npm + name: debug + purl: pkg:npm/debug + ranges: + - type: SEMVER + events: + - introduced: 3.0.0 + - fixed: 3.1.0 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2023/01/GHSA-9vvw-cc9w-f27h/GHSA-9vvw-cc9w-f27h.json + ecosystem_specific: + affected_functions: + - (debug).formatters.o + - package: + ecosystem: npm + name: debug + purl: pkg:npm/debug + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 2.6.9 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2023/01/GHSA-9vvw-cc9w-f27h/GHSA-9vvw-cc9w-f27h.json + ecosystem_specific: + affected_functions: + - (debug).formatters.o + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2017-20165 + - type: WEB + url: https://github.com/debug-js/debug/pull/504 + - type: WEB + url: https://github.com/debug-js/debug/commit/c38a0166c266a679c8de012d4eaccec3f944e685 + - type: WEB + url: https://github.com/debug-js/debug/commit/f53962e944a87e6ca9bb622a2a12dffc22a9bb5a + - type: PACKAGE + url: https://github.com/debug-js/debug + - type: WEB + url: https://github.com/debug-js/debug/releases/tag/2.6.9 + - type: WEB + url: https://github.com/debug-js/debug/releases/tag/3.1.0 + - type: WEB + url: https://vuldb.com/?ctiid.217665 + - type: WEB + url: https://vuldb.com/?id.217665 + database_specific: + cwe_ids: + - CWE-1333 + github_reviewed: true + github_reviewed_at: "2023-01-10T21:49:01Z" + nvd_published_at: "2023-01-09T10:15:00Z" + severity: HIGH + - schema_version: 1.6.0 + id: GHSA-gxpj-cx7g-858c + modified: 2024-03-25T19:01:23Z + published: 2018-08-09T20:18:07Z + aliases: + - CVE-2017-16137 + summary: Regular Expression Denial of Service in debug + details: "Affected versions of `debug` are vulnerable to regular expression denial of service when untrusted user input is passed into the `o` formatter. \n\nAs it takes 50,000 characters to block the event loop for 2 seconds, this issue is a low severity issue.\n\nThis was later re-introduced in version v3.2.0, and then repatched in versions 3.2.7 and 4.3.1.\n\n## Recommendation\n\nVersion 2.x.x: Update to version 2.6.9 or later.\nVersion 3.1.x: Update to version 3.1.0 or later.\nVersion 3.2.x: Update to version 3.2.7 or later.\nVersion 4.x.x: Update to version 4.3.1 or later." + affected: + - package: + ecosystem: npm + name: debug + purl: pkg:npm/debug + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 2.6.9 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2018/08/GHSA-gxpj-cx7g-858c/GHSA-gxpj-cx7g-858c.json + - package: + ecosystem: npm + name: debug + purl: pkg:npm/debug + ranges: + - type: SEMVER + events: + - introduced: 3.0.0 + - fixed: 3.1.0 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2018/08/GHSA-gxpj-cx7g-858c/GHSA-gxpj-cx7g-858c.json + - package: + ecosystem: npm + name: debug + purl: pkg:npm/debug + ranges: + - type: SEMVER + events: + - introduced: 3.2.0 + - fixed: 3.2.7 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2018/08/GHSA-gxpj-cx7g-858c/GHSA-gxpj-cx7g-858c.json + - package: + ecosystem: npm + name: debug + purl: pkg:npm/debug + ranges: + - type: SEMVER + events: + - introduced: 4.0.0 + - fixed: 4.3.1 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2018/08/GHSA-gxpj-cx7g-858c/GHSA-gxpj-cx7g-858c.json + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2017-16137 + - type: WEB + url: https://github.com/debug-js/debug/issues/797 + - type: WEB + url: https://github.com/visionmedia/debug/issues/501 + - type: WEB + url: https://github.com/visionmedia/debug/pull/504 + - type: WEB + url: https://github.com/debug-js/debug/commit/4e2150207c568adb9ead8f4c4528016081c88020 + - type: WEB + url: https://github.com/debug-js/debug/commit/71169065b5262f9858ac78cc0b688c84a438f290 + - type: WEB + url: https://github.com/debug-js/debug/commit/b6d12fdbc63b483e5c969da33ea6adc09946b5ac + - type: WEB + url: https://github.com/debug-js/debug/commit/f53962e944a87e6ca9bb622a2a12dffc22a9bb5a + - type: PACKAGE + url: https://github.com/visionmedia/debug + - type: WEB + url: https://lists.apache.org/thread.html/r8ba4c628fba7181af58817d452119481adce4ba92e889c643e4c7dd3@%3Ccommits.netbeans.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/rb5ac16fad337d1f3bb7079549f97d8166d0ef3082629417c39f12d63@%3Cnotifications.netbeans.apache.org%3E + database_specific: + cwe_ids: + - CWE-400 + github_reviewed: true + github_reviewed_at: "2020-06-16T21:38:18Z" + nvd_published_at: null + severity: LOW + - schema_version: 1.6.0 + id: GHSA-q5c4-39f5-m68j + modified: 2023-11-08T03:59:00.254876Z + published: 2018-07-24T20:00:17Z + aliases: + - CVE-2017-16023 + summary: Regular Expression Denial of Service in decamelize + details: |- + Affected versions of `decamelize` are susceptible to a denial of service vulnerability when user input is passed directly into `decamelize`. + + + + + ## Recommendation + + Update to version 1.1.2 or later. + affected: + - package: + ecosystem: npm + name: decamelize + purl: pkg:npm/decamelize + ranges: + - type: SEMVER + events: + - introduced: 1.1.0 + - fixed: 1.1.2 + database_specific: + last_known_affected_version_range: <= 1.1.1 + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2018/07/GHSA-q5c4-39f5-m68j/GHSA-q5c4-39f5-m68j.json + severity: + - type: CVSS_V3 + score: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2017-16023 + - type: WEB + url: https://github.com/sindresorhus/decamelize/issues/5 + - type: ADVISORY + url: https://github.com/advisories/GHSA-q5c4-39f5-m68j + - type: WEB + url: https://www.npmjs.com/advisories/308 + database_specific: + cwe_ids: + - CWE-400 + github_reviewed: true + github_reviewed_at: "2020-06-16T21:51:05Z" + nvd_published_at: null + severity: HIGH + - schema_version: 1.6.0 + id: GHSA-h6ch-v84p-w6p9 + modified: 2021-02-24T19:27:02Z + published: 2019-06-13T18:58:54Z + summary: Regular Expression Denial of Service (ReDoS) + details: A vulnerability was found in diff before v3.5.0, the affected versions of this package are vulnerable to Regular Expression Denial of Service (ReDoS) attacks. + affected: + - package: + ecosystem: npm + name: diff + purl: pkg:npm/diff + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 3.5.0 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2019/06/GHSA-h6ch-v84p-w6p9/GHSA-h6ch-v84p-w6p9.json + ecosystem_specific: + affected_functions: + - (diff).parsePatch + references: + - type: WEB + url: https://github.com/kpdecker/jsdiff/commit/2aec4298639bf30fb88a00b356bf404d3551b8c0 + - type: WEB + url: https://bugzilla.redhat.com/show_bug.cgi?id=1552148 + - type: WEB + url: https://snyk.io/vuln/npm:diff:20180305 + - type: WEB + url: https://www.npmjs.com/advisories/1631 + - type: WEB + url: https://www.whitesourcesoftware.com/vulnerability-database/WS-2018-0590 + database_specific: + cwe_ids: + - CWE-400 + github_reviewed: true + github_reviewed_at: "2019-06-13T18:54:38Z" + nvd_published_at: null + severity: HIGH + - schema_version: 1.6.0 + id: GHSA-qrmc-fj45-qfc2 + modified: 2023-11-08T04:00:01.054529Z + published: 2019-02-07T18:03:28Z + aliases: + - CVE-2018-16492 + summary: Prototype Pollution in extend + details: |- + Versions of `extend` prior to 3.0.2 (for 3.x) and 2.0.2 (for 2.x) are vulnerable to Prototype Pollution. The `extend()` function allows attackers to modify the prototype of Object causing the addition or modification of an existing property that will exist on all objects. + + + + + ## Recommendation + + If you're using `extend` 3.x upgrade to 3.0.2 or later. + If you're using `extend` 2.x upgrade to 2.0.2 or later. + affected: + - package: + ecosystem: npm + name: extend + purl: pkg:npm/extend + ranges: + - type: SEMVER + events: + - introduced: 3.0.0 + - fixed: 3.0.2 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2019/02/GHSA-qrmc-fj45-qfc2/GHSA-qrmc-fj45-qfc2.json + - package: + ecosystem: npm + name: extend + purl: pkg:npm/extend + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 2.0.2 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2019/02/GHSA-qrmc-fj45-qfc2/GHSA-qrmc-fj45-qfc2.json + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2018-16492 + - type: WEB + url: https://hackerone.com/reports/381185 + - type: ADVISORY + url: https://github.com/advisories/GHSA-qrmc-fj45-qfc2 + - type: WEB + url: https://www.npmjs.com/advisories/996 + database_specific: + cwe_ids: + - CWE-400 + github_reviewed: true + github_reviewed_at: "2020-06-16T21:52:44Z" + nvd_published_at: null + severity: MODERATE + - schema_version: 1.6.0 + id: GHSA-2j2x-2gpw-g8fm + modified: 2023-11-08T04:03:48.649741Z + published: 2022-12-25T21:30:22Z + aliases: + - CVE-2020-36632 + summary: flat vulnerable to Prototype Pollution + details: flat helps flatten/unflatten nested Javascript objects. A vulnerability, which was classified as critical, was found in hughsk flat up to 5.0.0. This affects the function unflatten of the file index.js. The manipulation leads to improperly controlled modification of object prototype attributes ('prototype pollution'). It is possible to initiate the attack remotely. Upgrading to version 5.0.1 can address this issue. The name of the patch is 20ef0ef55dfa028caddaedbcb33efbdb04d18e13. It is recommended to upgrade the affected component. The identifier VDB-216777 was assigned to this vulnerability. + affected: + - package: + ecosystem: npm + name: flat + purl: pkg:npm/flat + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 5.0.1 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/12/GHSA-2j2x-2gpw-g8fm/GHSA-2j2x-2gpw-g8fm.json + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2020-36632 + - type: WEB + url: https://github.com/hughsk/flat/issues/105 + - type: WEB + url: https://github.com/hughsk/flat/pull/106 + - type: WEB + url: https://github.com/hughsk/flat/commit/20ef0ef55dfa028caddaedbcb33efbdb04d18e13 + - type: PACKAGE + url: https://github.com/hughsk/flat + - type: WEB + url: https://github.com/hughsk/flat/releases/tag/5.0.1 + - type: WEB + url: https://vuldb.com/?ctiid.216777 + - type: WEB + url: https://vuldb.com/?id.216777 + database_specific: + cwe_ids: + - CWE-1321 + github_reviewed: true + github_reviewed_at: "2022-12-30T16:27:14Z" + nvd_published_at: "2022-12-25T20:15:00Z" + severity: CRITICAL + - schema_version: 1.6.0 + id: GHSA-8r6j-v8pm-fqw3 + modified: 2023-11-08T04:13:38.062107Z + published: 2023-10-06T21:30:49Z + aliases: + - CVE-2023-45311 + summary: Code injection in fsevents + details: fsevents before 1.2.11 depends on the https://fsevents-binaries.s3-us-west-2.amazonaws.com URL, which might allow an adversary to execute arbitrary code if any JavaScript project (that depends on fsevents) distributes code that was obtained from that URL at a time when it was controlled by an adversary. + affected: + - package: + ecosystem: npm + name: fsevents + purl: pkg:npm/fsevents + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 1.2.11 + database_specific: + last_known_affected_version_range: <= 1.2.10 + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2023/10/GHSA-8r6j-v8pm-fqw3/GHSA-8r6j-v8pm-fqw3.json + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2023-45311 + - type: WEB + url: https://github.com/fsevents/fsevents/commit/909af26846834642c81d19f4148afa3b7557b058 + - type: WEB + url: https://github.com/atlassian/moo/blob/56ccbdd41b493332bc2cd7a4097a5802594cdb9c/package-lock.json#L1901-L1902 + - type: WEB + url: https://github.com/atlassian/react-immutable-proptypes/blob/ddb9fa5194b931bf7528eb4f2c0a8c3434f70edd/package-lock.json#L153 + - type: WEB + url: https://github.com/cloudflare/authr/blob/3f6129d97d06e61033a7f237d84e35e678db490f/ts/package-lock.json#L1512 + - type: WEB + url: https://github.com/cloudflare/hugo-cloudflare-docs/blob/e0f7cfa195af8ef1bfa51a487be7d34ba298ed06/package-lock.json#L494 + - type: WEB + url: https://github.com/cloudflare/redux-grim/blob/b652f99f95fb16812336073951adc5c5a93e2c23/package-lock.json#L266-L267 + - type: WEB + url: https://github.com/cloudflare/serverless-cloudflare-workers/blob/e95e1e9c9770ed9a3d9480c1fa73e64391268354/package-lock.json#L737 + - type: PACKAGE + url: https://github.com/fsevents/fsevents + - type: WEB + url: https://github.com/fsevents/fsevents/compare/v1.2.10...v1.2.11 + - type: WEB + url: https://security.snyk.io/vuln/SNYK-JS-FSEVENTS-5487987 + database_specific: + cwe_ids: + - CWE-94 + github_reviewed: true + github_reviewed_at: "2023-10-09T21:35:16Z" + nvd_published_at: "2023-10-06T21:15:10Z" + severity: CRITICAL + - schema_version: 1.6.0 + id: MAL-2023-462 + modified: 2023-11-08T04:24:32.787594Z + published: 2023-04-27T19:20:00Z + aliases: + - GHSA-xv2f-5jw4-v95m + summary: Malicious code in fsevents (npm) + details: "\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: ghsa-malware (acdc3ae57250fab51aeff6e3938ed40197a1b74eb688a72cd5d7eee0c77a7167)\nThis advisory is intended to inform the npm ecosystem with details to resolve a third-party malware incident that may have impacted your infrastructure if you are directly or transitively dependent on the [fsevents](https://www.npmjs.com/package/fsevents) npm package.\n\n## Overview\n\n[fsevents](https://www.npmjs.com/package/fsevents) v1.0.0 <= v1.2.10 downloaded binary executables that contained unintended code due to an expired cloud storage resource being reclaimed by a third party.\n\n## Details\n\nThe [fsevents npm package](https://www.npmjs.com/package/fsevents) v1.0.0 through v1.2.10 attempts to fetch a pre-built binary executable artifact (fse.node) from cloud storage. If this fetch fails, fsevents v1.x will attempt to build this artifact directly from source.\n\nVersion 1.x of fsevents has been deprecated for several years and as a result the aforementioned cloud storage resource namespace was available for registration. A third party, unrelated to the fsevents maintainers, subsequently claimed this namespace and in April 2023 this third party started serving modified versions of the “fse.node” binary executable artifact to new fsevents v1.x users. \n\nAs of April 27, 2023 the cloud storage resource in question has been indefinitely suspended and is no longer serving binaries.\n\nThe affected cloud storage pre-fetch was [removed](https://github.com/fsevents/fsevents/commit/909af26846834642c81d19f4148afa3b7557b058) in fsevents version 1.2.11.\n\n## Impact\n\nThe impact of the modified versions of fse.node appears to be limited to information gathering. \n\nNote that initial analysis was performed for the modified artifact associated with fsevents v1.2.9, which was distributed as fse-v1.2.9-node-v72-darwin-x64.tar.gz prior to the cloud storage resource being suspended. \n\nFor more detailed analysis you may compare a decompilation of the v1.x fse.node artifacts on your systems with the intended fsevents v1.x source as it exists at https://github.com/fsevents/fsevents/tree/v1.x \n\n## How to fix it\n\nIf you are dependent on the deprecated version of fsevents v1.x, the recommended course of action is to upgrade to fsevents v2.x or remove the dependency altogether as currently maintained versions of Node.js no longer require fsevents for file system watching on macOS.\n" + affected: + - package: + ecosystem: npm + name: fsevents + purl: pkg:npm/fsevents + ranges: + - type: SEMVER + events: + - introduced: 1.0.0 + - fixed: 1.2.11 + database_specific: + cwes: + - cweId: CWE-506 + description: The product contains code that appears to be malicious in nature. + name: Embedded Malicious Code + source: https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/fsevents/MAL-2023-462.json + references: + - type: WEB + url: https://www.npmjs.com/package/fsevents + - type: WEB + url: https://github.com/fsevents/fsevents/commit/909af26846834642c81d19f4148afa3b7557b058 + - type: ADVISORY + url: https://github.com/advisories/GHSA-xv2f-5jw4-v95m + database_specific: + malicious-packages-origins: + - id: GHSA-xv2f-5jw4-v95m + import_time: "2023-07-30T21:58:32.873496549Z" + modified_time: "2023-05-01T15:47:26Z" + ranges: + - events: + - introduced: 1.0.0 + - fixed: 1.2.11 + type: SEMVER + sha256: acdc3ae57250fab51aeff6e3938ed40197a1b74eb688a72cd5d7eee0c77a7167 + source: ghsa-malware + - schema_version: 1.6.0 + id: GHSA-4q6p-r6v2-jvc5 + modified: 2023-11-08T04:13:31.847974Z + published: 2023-09-27T20:16:00Z + aliases: + - CVE-2023-43646 + summary: Chaijs/get-func-name vulnerable to ReDoS + details: |- + The current regex implementation for parsing values in the module is susceptible to excessive backtracking, leading to potential DoS attacks. The regex implementation in question is as follows: + + ```js + const functionNameMatch = /\s*function(?:\s|\s*\/\*[^(?:*/)]+\*\/\s*)*([^\s(/]+)/; + ``` + + This vulnerability can be exploited when there is an imbalance in parentheses, which results in excessive backtracking and subsequently increases the CPU load and processing time significantly. This vulnerability can be triggered using the following input: + + ```js + '\t'.repeat(54773) + '\t/function/i' + ``` + + Here is a simple PoC code to demonstrate the issue: + + ```js + const protocolre = /\sfunction(?:\s|\s/*[^(?:*\/)]+*/\s*)*([^\(\/]+)/; + + const startTime = Date.now(); + const maliciousInput = '\t'.repeat(54773) + '\t/function/i' + + protocolre.test(maliciousInput); + + const endTime = Date.now(); + + console.log("process time: ", endTime - startTime, "ms"); + ``` + affected: + - package: + ecosystem: npm + name: get-func-name + purl: pkg:npm/get-func-name + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 2.0.1 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2023/09/GHSA-4q6p-r6v2-jvc5/GHSA-4q6p-r6v2-jvc5.json + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H + references: + - type: WEB + url: https://github.com/chaijs/get-func-name/security/advisories/GHSA-4q6p-r6v2-jvc5 + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2023-43646 + - type: WEB + url: https://github.com/chaijs/get-func-name/commit/f934b228b5e2cb94d6c8576d3aac05493f667c69 + - type: PACKAGE + url: https://github.com/chaijs/get-func-name + - type: WEB + url: https://github.com/chaijs/get-func-name/blob/78ad756441a83f3dc203e50f76c113ae3ac017dc/index.js#L15 + database_specific: + cwe_ids: + - CWE-1333 + - CWE-400 + github_reviewed: true + github_reviewed_at: "2023-09-27T20:16:00Z" + nvd_published_at: "2023-09-27T15:19:34Z" + severity: HIGH + - schema_version: 1.6.0 + id: GHSA-cj88-88mr-972w + modified: 2023-12-06T01:01:17.963266Z + published: 2022-07-18T17:03:23Z + aliases: + - BIT-gulp-2021-35065 + - CVE-2021-35065 + summary: glob-parent 6.0.0 vulnerable to Regular Expression Denial of Service + details: |- + glob-parent 6.0.0 is vulnerable to Regular Expression Denial of Service (ReDoS). This issue is fixed in version 6.0.1. + + This vulnerability is separate from [GHSA-ww39-953v-wcq6](https://github.com/advisories/GHSA-ww39-953v-wcq6). + affected: + - package: + ecosystem: npm + name: glob-parent + purl: pkg:npm/glob-parent + ranges: + - type: SEMVER + events: + - introduced: 6.0.0 + - fixed: 6.0.1 + versions: + - 6.0.0 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/07/GHSA-cj88-88mr-972w/GHSA-cj88-88mr-972w.json + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2021-35065 + - type: WEB + url: https://github.com/opensearch-project/OpenSearch-Dashboards/issues/1103 + - type: WEB + url: https://github.com/gulpjs/glob-parent/pull/49 + - type: WEB + url: https://github.com/gulpjs/glob-parent/commit/32f6d52663b7addac38d0dff570d8127edf03f47 + - type: WEB + url: https://github.com/gulpjs/glob-parent/commit/3e9f04a3b4349db7e1962d87c9a7398cda51f339 + - type: PACKAGE + url: https://github.com/gulpjs/glob-parent + - type: WEB + url: https://github.com/gulpjs/glob-parent/releases/tag/v6.0.1 + - type: WEB + url: https://security.snyk.io/vuln/SNYK-JS-GLOBPARENT-1314294 + - type: WEB + url: https://www.mend.io/vulnerability-database/CVE-2021-35065 + database_specific: + cwe_ids: + - CWE-1333 + - CWE-400 + github_reviewed: true + github_reviewed_at: "2022-07-18T17:03:23Z" + nvd_published_at: "2022-12-26T07:15:00Z" + severity: HIGH + - schema_version: 1.6.0 + id: GHSA-ww39-953v-wcq6 + modified: 2023-12-06T01:00:30.77025Z + published: 2021-06-07T21:56:34Z + aliases: + - BIT-gulp-2020-28469 + - CVE-2020-28469 + - SNYK-JAVA-ORGWEBJARSBOWERGITHUBES128-1059093 + - SNYK-JAVA-ORGWEBJARSNPM-1059092 + - SNYK-JS-GLOBPARENT-1016905 + summary: glob-parent vulnerable to Regular Expression Denial of Service in enclosure regex + details: This affects the package glob-parent before 5.1.2. The enclosure regex used to check for strings ending in enclosure containing path separator. + affected: + - package: + ecosystem: npm + name: glob-parent + purl: pkg:npm/glob-parent + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 5.1.2 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/06/GHSA-ww39-953v-wcq6/GHSA-ww39-953v-wcq6.json + ecosystem_specific: + affected_functions: + - (glob-parent).globParent + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2020-28469 + - type: WEB + url: https://github.com/gulpjs/glob-parent/pull/36 + - type: WEB + url: https://github.com/gulpjs/glob-parent/pull/36/commits/c6db86422a9731d4f3d332ce4a81c27ea6b0ee46 + - type: PACKAGE + url: https://github.com/gulpjs/glob-parent + - type: WEB + url: https://github.com/gulpjs/glob-parent/blob/6ce8d11f2f1ed8e80a9526b1dc8cf3aa71f43474/index.js%23L9 + - type: WEB + url: https://github.com/gulpjs/glob-parent/releases/tag/v5.1.2 + - type: WEB + url: https://snyk.io/vuln/SNYK-JAVA-ORGWEBJARSBOWERGITHUBES128-1059093 + - type: WEB + url: https://snyk.io/vuln/SNYK-JAVA-ORGWEBJARSNPM-1059092 + - type: WEB + url: https://snyk.io/vuln/SNYK-JS-GLOBPARENT-1016905 + - type: WEB + url: https://www.oracle.com/security-alerts/cpujan2022.html + database_specific: + cwe_ids: + - CWE-400 + github_reviewed: true + github_reviewed_at: "2021-06-04T18:30:45Z" + nvd_published_at: "2021-06-03T16:15:00Z" + severity: HIGH + - schema_version: 1.6.0 + id: GHSA-r9q4-w3fm-wrm2 + modified: 2021-09-27T21:01:47Z + published: 2020-09-02T21:21:43Z + summary: Cross-Site Scripting in google-closure-library + details: |- + Versions of `google-closure-library` prior to 20190301.0.0 are vulnerable to Cross-Site Scripting. The `safedomtreeprocessor.processToString()` function improperly processed empty elements, which could allow attackers to execute arbitrary JavaScript through Mutation Cross-Site Scripting. + + + ## Recommendation + + Upgrade to version 20190301.0.0 or later. + affected: + - package: + ecosystem: npm + name: google-closure-library + purl: pkg:npm/google-closure-library + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 20190301.0.0 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/09/GHSA-r9q4-w3fm-wrm2/GHSA-r9q4-w3fm-wrm2.json + references: + - type: WEB + url: https://github.com/google/closure-library/commit/c79ab48e8e962fee57e68739c00e16b9934c0ffa#commitcomment-33294853 + - type: PACKAGE + url: https://github.com/google/closure-library + - type: WEB + url: https://snyk.io/vuln/SNYK-JS-GOOGLECLOSURELIBRARY-174519 + - type: WEB + url: https://www.npmjs.com/advisories/878 + database_specific: + cwe_ids: + - CWE-79 + github_reviewed: true + github_reviewed_at: "2020-08-31T18:39:08Z" + nvd_published_at: null + severity: MODERATE + - schema_version: 1.6.0 + id: GHSA-vh5w-fg69-rc8m + modified: 2023-11-08T04:04:19.217106Z + published: 2021-05-07T16:06:34Z + aliases: + - CVE-2020-8910 + summary: Improper Input Validation in Google Closure Library + details: A URL parsing issue in goog.uri of the Google Closure Library versions up to and including v20200224 allows an attacker to send malicious URLs to be parsed by the library and return the wrong authority. Mitigation -- update your library to version v20200315. + affected: + - package: + ecosystem: npm + name: google-closure-library + purl: pkg:npm/google-closure-library + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 20200315.0.0 + database_specific: + last_known_affected_version_range: <= 20200224.0.0 + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/05/GHSA-vh5w-fg69-rc8m/GHSA-vh5w-fg69-rc8m.json + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2020-8910 + - type: WEB + url: https://github.com/google/closure-library/commit/294fc00b01d248419d8f8de37580adf2a0024fc9 + - type: WEB + url: https://github.com/google/closure-library/releases/tag/v20200315 + database_specific: + cwe_ids: + - CWE-20 + github_reviewed: true + github_reviewed_at: "2021-05-06T20:57:55Z" + nvd_published_at: "2020-03-26T12:15:00Z" + severity: MODERATE + - schema_version: 1.6.0 + id: GHSA-qh2h-chj9-jffq + modified: 2023-11-08T03:59:01.241655Z + published: 2018-06-08T12:43:43Z + aliases: + - CVE-2017-16042 + summary: Growl before 1.10.0 vulnerable to Command Injection + details: |- + Affected versions of `growl` do not properly sanitize input prior to passing it into a shell command, allowing for arbitrary command execution. + + + ## Recommendation + + Update to version 1.10.0 or later. + affected: + - package: + ecosystem: npm + name: growl + purl: pkg:npm/growl + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 1.10.0 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2018/06/GHSA-qh2h-chj9-jffq/GHSA-qh2h-chj9-jffq.json + severity: + - type: CVSS_V3 + score: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2017-16042 + - type: WEB + url: https://github.com/tj/node-growl/issues/60 + - type: WEB + url: https://github.com/tj/node-growl/pull/61 + - type: WEB + url: https://github.com/tj/node-growl/pull/62 + - type: WEB + url: https://github.com/tj/node-growl/commit/d71177d5331c9de4658aca62e0ac921f178b0669 + - type: PACKAGE + url: https://github.com/tj/node-growl + - type: WEB + url: https://www.npmjs.com/advisories/146 + database_specific: + cwe_ids: + - CWE-78 + - CWE-94 + github_reviewed: true + github_reviewed_at: "2020-06-16T21:51:54Z" + nvd_published_at: null + severity: CRITICAL + - schema_version: 1.6.0 + id: GHSA-pfq8-rq6v-vf5m + modified: 2024-04-22T23:26:36.913905Z + published: 2022-10-31T19:00:36Z + aliases: + - CVE-2022-37620 + summary: kangax html-minifier REDoS vulnerability + details: A Regular Expression Denial of Service (ReDoS) flaw was found in kangax html-minifier 4.0.0 via the candidate variable in htmlminifier.js. + affected: + - package: + ecosystem: npm + name: html-minifier + purl: pkg:npm/html-minifier + ranges: + - type: SEMVER + events: + - introduced: "0" + - last_affected: 4.0.0 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/10/GHSA-pfq8-rq6v-vf5m/GHSA-pfq8-rq6v-vf5m.json + ecosystem_specific: + affected_functions: + - (html-minifier).minify + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2022-37620 + - type: WEB + url: https://github.com/kangax/html-minifier/issues/1135 + - type: PACKAGE + url: https://github.com/kangax/html-minifier + - type: WEB + url: https://github.com/kangax/html-minifier/blob/51ce10f4daedb1de483ffbcccecc41be1c873da2/src/htmlminifier.js#L1338 + - type: WEB + url: https://github.com/kangax/html-minifier/blob/51ce10f4daedb1de483ffbcccecc41be1c873da2/src/htmlminifier.js#L294 + database_specific: + cwe_ids: + - CWE-1333 + - CWE-400 + github_reviewed: true + github_reviewed_at: "2024-04-22T23:06:37Z" + nvd_published_at: "2022-10-31T12:15:00Z" + severity: HIGH + - schema_version: 1.6.0 + id: GHSA-86wf-436m-h424 + modified: 2023-11-08T04:00:42.433382Z + published: 2022-01-06T20:30:13Z + aliases: + - CVE-2019-10196 + summary: 'Resource Exhaustion Denial of Service in http-proxy-agent ' + details: A flaw was found in http-proxy-agent, prior to version 2.1.0. It was discovered http-proxy-agent passes an auth option to the Buffer constructor without proper sanitization. This could result in a Denial of Service through the usage of all available CPU resources and data exposure through an uninitialized memory leak in setups where an attacker could submit typed input to the auth parameter. + affected: + - package: + ecosystem: npm + name: http-proxy-agent + purl: pkg:npm/http-proxy-agent + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 2.1.0 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/01/GHSA-86wf-436m-h424/GHSA-86wf-436m-h424.json + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2019-10196 + - type: WEB + url: https://github.com/TooTallNate/node-http-proxy-agent/commit/b7b7cc793c3226aa83f820ce5c277e81862d32eb + - type: WEB + url: https://bugzilla.redhat.com/show_bug.cgi?id=1567245 + - type: WEB + url: https://www.npmjs.com/advisories/607 + database_specific: + cwe_ids: + - CWE-665 + github_reviewed: true + github_reviewed_at: "2021-03-22T22:28:09Z" + nvd_published_at: "2021-03-19T20:15:00Z" + severity: MODERATE + - schema_version: 1.6.0 + id: GHSA-8w57-jfpm-945m + modified: 2023-04-11T00:26:58Z + published: 2019-06-11T16:16:07Z + summary: Denial of Service in http-proxy-agent + details: |- + Versions of `http-proxy-agent` before 2.1.0 are vulnerable to denial of service and uninitialized memory leak when unsanitized options are passed to `Buffer`. An attacker may leverage these unsanitized options to consume system resources. + + + ## Recommendation + + Update to version 2.1.0 or later. + affected: + - package: + ecosystem: npm + name: http-proxy-agent + purl: pkg:npm/http-proxy-agent + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 2.1.0 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2019/06/GHSA-8w57-jfpm-945m/GHSA-8w57-jfpm-945m.json + references: + - type: WEB + url: https://hackerone.com/reports/321631 + - type: WEB + url: https://github.com/TooTallNate/node-http-proxy-agent/blob/2.0.0/index.js#L80 + - type: WEB + url: https://www.npmjs.com/advisories/607 + database_specific: + cwe_ids: + - CWE-400 + github_reviewed: true + github_reviewed_at: "2019-06-11T16:11:38Z" + nvd_published_at: null + severity: HIGH + - schema_version: 1.6.0 + id: GHSA-q257-vv4p-fg92 + modified: 2023-11-08T03:58:59.2803Z + published: 2018-11-09T17:49:34Z + aliases: + - CVE-2017-16005 + summary: Header Forgery in http-signature + details: "Affected versions of `http-signature` contain a vulnerability which can allow an attacker in a privileged network position to modify header names and change the meaning of the request, without requiring an updated signature. \n\nThis problem occurs because vulnerable versions of `http-signature` sign the contents of headers, but not the header names.\n\n## Proof of Concept\n\nConsider this to be the initial, untampered request:\n```http\nPOST /pay HTTP/1.1\nHost: example.com\nDate: Thu, 05 Jan 2012 21:31:40 GMT\nX-Payment-Source: src@money.com\nX-Payment-Destination: dst@money.com\nAuthorization: Signature keyId=\"Test\",algorithm=\"rsa-sha256\",headers=\"x-payment-source x-payment-destination\" MDyO5tSvin5...\n```\n\nAnd the request is intercepted and tampered as follows:\n```http\nX-Payment-Source: dst@money.com // Emails switched\nX-Payment-Destination: src@money.com\nAuthorization: Signature keyId=\"Test\",algorithm=\"rsa-sha256\",headers=\"x-payment-destination x-payment-source\" MDyO5tSvin5...\n```\n\nIn the resulting responses, both requests would pass signature verification without issue.\n```\nsrc@money.com\\n\ndst@money.com\\n\n```\n\n\n\n## Recommendation\n\nUpdate to version 0.10.0 or higher." + affected: + - package: + ecosystem: npm + name: http-signature + purl: pkg:npm/http-signature + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 0.10.0 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2018/11/GHSA-q257-vv4p-fg92/GHSA-q257-vv4p-fg92.json + severity: + - type: CVSS_V3 + score: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2017-16005 + - type: WEB + url: https://github.com/joyent/node-http-signature/issues/10 + - type: ADVISORY + url: https://github.com/advisories/GHSA-q257-vv4p-fg92 + - type: WEB + url: https://www.npmjs.com/advisories/318 + database_specific: + cwe_ids: + - CWE-20 + github_reviewed: true + github_reviewed_at: "2020-06-16T21:50:21Z" + nvd_published_at: null + severity: HIGH + - schema_version: 1.6.0 + id: GHSA-8g7p-74h8-hg48 + modified: 2023-11-08T04:00:18.222205Z + published: 2018-07-27T17:04:52Z + aliases: + - CVE-2018-3739 + summary: Denial of Service in https-proxy-agent + details: |- + Versions of `https-proxy-agent` before 2.2.0 are vulnerable to denial of service. This is due to unsanitized options (proxy.auth) being passed to `Buffer()`. + + + ## Recommendation + + Update to version 2.2.0 or later. + affected: + - package: + ecosystem: npm + name: https-proxy-agent + purl: pkg:npm/https-proxy-agent + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 2.2.0 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2018/07/GHSA-8g7p-74h8-hg48/GHSA-8g7p-74h8-hg48.json + severity: + - type: CVSS_V3 + score: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2018-3736 + - type: WEB + url: https://github.com/TooTallNate/node-https-proxy-agent/commit/1c24219df87524e6ed973127e81f30801d658f07 + - type: WEB + url: https://hackerone.com/reports/319532 + - type: PACKAGE + url: https://github.com/TooTallNate/node-https-proxy-agent + - type: ADVISORY + url: https://github.com/advisories/GHSA-8g7p-74h8-hg48 + - type: WEB + url: https://www.npmjs.com/advisories/593 + database_specific: + cwe_ids: + - CWE-125 + - CWE-400 + github_reviewed: true + github_reviewed_at: "2020-06-16T21:25:32Z" + nvd_published_at: null + severity: CRITICAL + - schema_version: 1.6.0 + id: GHSA-pc5p-h8pf-mvwp + modified: 2023-11-01T20:54:11Z + published: 2020-04-16T03:14:56Z + summary: Machine-In-The-Middle in https-proxy-agent + details: |- + Versions of `https-proxy-agent` prior to 2.2.3 are vulnerable to Machine-In-The-Middle. The package fails to enforce TLS on the socket if the proxy server responds the to the request with a HTTP status different than 200. This allows an attacker with access to the proxy server to intercept unencrypted communications, which may include sensitive information such as credentials. + + + ## Recommendation + + Upgrade to version 3.0.0 or 2.2.3. + affected: + - package: + ecosystem: npm + name: https-proxy-agent + purl: pkg:npm/https-proxy-agent + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 2.2.3 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/04/GHSA-pc5p-h8pf-mvwp/GHSA-pc5p-h8pf-mvwp.json + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:C/C:H/I:N/A:N + references: + - type: WEB + url: https://github.com/TooTallNate/node-https-proxy-agent/commit/36d8cf509f877fa44f4404fce57ebaf9410fe51b + - type: WEB + url: https://hackerone.com/reports/541502 + - type: WEB + url: https://snyk.io/vuln/SNYK-JS-HTTPSPROXYAGENT-469131 + - type: WEB + url: https://www.npmjs.com/advisories/1184 + database_specific: + cwe_ids: + - CWE-300 + github_reviewed: true + github_reviewed_at: "2020-04-16T03:03:19Z" + nvd_published_at: null + severity: MODERATE + - schema_version: 1.6.0 + id: GHSA-257q-pv89-v3xv + modified: 2024-04-01T18:46:17.903226Z + published: 2023-06-26T21:30:58Z + aliases: + - CVE-2020-23064 + - SNYK-JS-JQUERY-565129 + summary: jQuery Cross Site Scripting vulnerability + details: Cross Site Scripting vulnerability in jQuery v.2.2.0 until v.3.5.0 allows a remote attacker to execute arbitrary code via the `` element. + affected: + - package: + ecosystem: npm + name: jquery + purl: pkg:npm/jquery + ranges: + - type: SEMVER + events: + - introduced: 1.0.3 + - fixed: 3.5.0 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2023/06/GHSA-257q-pv89-v3xv/GHSA-257q-pv89-v3xv.json + ecosystem_specific: + affected_functions: + - (jquery).htmlPrefilter + - package: + ecosystem: NuGet + name: jQuery + purl: pkg:nuget/jQuery + ranges: + - type: ECOSYSTEM + events: + - introduced: 1.0.3 + - fixed: 3.5.0 + versions: + - 1.10.0 + - 1.10.0.1 + - 1.10.1 + - 1.10.2 + - 1.11.0 + - 1.11.1 + - 1.11.2 + - 1.11.3 + - 1.12.0 + - 1.12.1 + - 1.12.2 + - 1.12.3 + - 1.12.4 + - 1.4.1 + - 1.4.2 + - 1.4.3 + - 1.4.4 + - 1.5.0 + - 1.5.1 + - 1.5.2 + - 1.6.0 + - 1.6.1 + - 1.6.2 + - 1.6.3 + - 1.6.4 + - 1.7.0 + - 1.7.1 + - 1.7.1.1 + - 1.7.2 + - 1.8.0 + - 1.8.1 + - 1.8.2 + - 1.8.3 + - 1.9.0 + - 1.9.1 + - 2.0.0 + - 2.0.1 + - 2.0.1.1 + - 2.0.2 + - 2.0.3 + - 2.1.0 + - 2.1.1 + - 2.1.2 + - 2.1.3 + - 2.1.4 + - 2.2.0 + - 2.2.1 + - 2.2.2 + - 2.2.3 + - 2.2.4 + - 3.0.0 + - 3.0.0.1 + - 3.1.0 + - 3.1.1 + - 3.2.1 + - 3.3.1 + - 3.4.0 + - 3.4.1 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2023/06/GHSA-257q-pv89-v3xv/GHSA-257q-pv89-v3xv.json + - package: + ecosystem: RubyGems + name: jquery-rails + purl: pkg:gem/jquery-rails + ranges: + - type: ECOSYSTEM + events: + - introduced: "0" + - fixed: 4.4.0 + versions: + - 0.1.1 + - 0.1.2 + - 0.1.3 + - "0.2" + - 0.2.1 + - 0.2.2 + - 0.2.3 + - 0.2.4 + - 0.2.5 + - 0.2.6 + - 0.2.7 + - "1.0" + - 1.0.1 + - 1.0.10 + - 1.0.11 + - 1.0.12 + - 1.0.13 + - 1.0.14 + - 1.0.15 + - 1.0.16 + - 1.0.17 + - 1.0.18 + - 1.0.19 + - 1.0.2 + - 1.0.3 + - 1.0.4 + - 1.0.5 + - 1.0.6 + - 1.0.7 + - 1.0.8 + - 1.0.9 + - 1.0.rc + - 2.0.1 + - 2.0.2 + - 2.0.3 + - 2.1.0 + - 2.1.1 + - 2.1.2 + - 2.1.3 + - 2.1.4 + - 2.2.0 + - 2.2.1 + - 2.2.2 + - 2.3.0 + - 3.0.0 + - 3.0.1 + - 3.0.2 + - 3.0.3 + - 3.0.4 + - 3.1.0 + - 3.1.1 + - 3.1.2 + - 3.1.3 + - 3.1.4 + - 3.1.5 + - 4.0.0 + - 4.0.0.beta1 + - 4.0.0.beta2 + - 4.0.1 + - 4.0.2 + - 4.0.3 + - 4.0.4 + - 4.0.5 + - 4.1.0 + - 4.1.1 + - 4.2.0 + - 4.2.1 + - 4.2.2 + - 4.3.0 + - 4.3.1 + - 4.3.2 + - 4.3.3 + - 4.3.4 + - 4.3.5 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2023/06/GHSA-257q-pv89-v3xv/GHSA-257q-pv89-v3xv.json + - package: + ecosystem: Maven + name: org.webjars.npm:jquery + purl: pkg:maven/org.webjars.npm/jquery + ranges: + - type: ECOSYSTEM + events: + - introduced: 1.0.3 + - fixed: 3.5.0 + versions: + - 1.11.0 + - 1.11.1 + - 1.11.3 + - 1.12.1 + - 1.12.2 + - 1.12.3 + - 1.12.4 + - 1.7.2 + - 1.7.3 + - 1.8.2 + - 1.8.3 + - 1.9.1 + - 2.1.0 + - 2.1.1 + - 2.1.1-rc1 + - 2.1.1-rc2 + - 2.1.3 + - 2.1.4 + - 2.2.0 + - 2.2.1 + - 2.2.2 + - 2.2.3 + - 2.2.4 + - 3.0.0 + - 3.0.0-alpha1 + - 3.0.0-beta1 + - 3.0.0-rc1 + - 3.1.0 + - 3.1.1 + - 3.2.0 + - 3.2.1 + - 3.3.0 + - 3.3.1 + - 3.4.0 + - 3.4.1 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2023/06/GHSA-257q-pv89-v3xv/GHSA-257q-pv89-v3xv.json + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2020-23064 + - type: WEB + url: https://github.com/jquery/jquery/commit/1d61fd9407e6fbe82fe55cb0b938307aa0791f77 + - type: WEB + url: https://blog.jquery.com/2020/04/10/jquery-3-5-0-released + - type: PACKAGE + url: https://github.com/jquery/jquery + - type: WEB + url: https://github.com/rails/jquery-rails/blob/master/CHANGELOG.md#410 + - type: WEB + url: https://github.com/rails/jquery-rails/blob/master/CHANGELOG.md#440 + - type: WEB + url: https://github.com/rails/jquery-rails/blob/v4.3.5/vendor/assets/javascripts/jquery3.js#L5979 + - type: WEB + url: https://github.com/rails/jquery-rails/blob/v4.4.0/vendor/assets/javascripts/jquery3.js#L6162 + - type: WEB + url: https://github.com/rubysec/ruby-advisory-db/blob/master/gems/jquery-rails/CVE-2020-23064.yml + - type: WEB + url: https://security.netapp.com/advisory/ntap-20230725-0003 + - type: WEB + url: https://snyk.io/vuln/SNYK-JS-JQUERY-565129 + database_specific: + cwe_ids: + - CWE-79 + github_reviewed: true + github_reviewed_at: "2023-07-07T15:07:56Z" + nvd_published_at: "2023-06-26T19:15:09Z" + severity: MODERATE + - schema_version: 1.6.0 + id: GHSA-2pqj-h3vj-pqgw + modified: 2024-03-08T05:20:14.907785Z + published: 2020-09-01T16:41:46Z + aliases: + - CVE-2012-6708 + summary: Cross-Site Scripting in jquery + details: |- + Affected versions of `jquery` are vulnerable to cross-site scripting. This occurs because the main `jquery` function uses a regular expression to differentiate between HTML and selectors, but does not properly anchor the regular expression. The result is that `jquery` may interpret HTML as selectors when given certain inputs, allowing for client side code execution. + + ## Proof of Concept + ``` + $("#log").html( + $("element[attribute='']").html() + ); + ``` + + + + + ## Recommendation + + Update to version 1.9.0 or later. + affected: + - package: + ecosystem: npm + name: jquery + purl: pkg:npm/jquery + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 1.9.0 + database_specific: + last_known_affected_version_range: <= 1.8.3 + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/09/GHSA-2pqj-h3vj-pqgw/GHSA-2pqj-h3vj-pqgw.json + - package: + ecosystem: Maven + name: org.webjars.npm:jquery + purl: pkg:maven/org.webjars.npm/jquery + ranges: + - type: ECOSYSTEM + events: + - introduced: "0" + - fixed: 1.9.0 + versions: + - 1.7.2 + - 1.7.3 + - 1.8.2 + - 1.8.3 + database_specific: + last_known_affected_version_range: <= 1.8.3 + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/09/GHSA-2pqj-h3vj-pqgw/GHSA-2pqj-h3vj-pqgw.json + - package: + ecosystem: NuGet + name: jQuery + purl: pkg:nuget/jQuery + ranges: + - type: ECOSYSTEM + events: + - introduced: "0" + - fixed: 1.9.0 + versions: + - 1.4.1 + - 1.4.2 + - 1.4.3 + - 1.4.4 + - 1.5.0 + - 1.5.1 + - 1.5.2 + - 1.6.0 + - 1.6.1 + - 1.6.2 + - 1.6.3 + - 1.6.4 + - 1.7.0 + - 1.7.1 + - 1.7.1.1 + - 1.7.2 + - 1.8.0 + - 1.8.1 + - 1.8.2 + - 1.8.3 + database_specific: + last_known_affected_version_range: <= 1.8.3 + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/09/GHSA-2pqj-h3vj-pqgw/GHSA-2pqj-h3vj-pqgw.json + - package: + ecosystem: RubyGems + name: jquery-rails + purl: pkg:gem/jquery-rails + ranges: + - type: ECOSYSTEM + events: + - introduced: "0" + - fixed: 2.2.0 + versions: + - 0.1.1 + - 0.1.2 + - 0.1.3 + - "0.2" + - 0.2.1 + - 0.2.2 + - 0.2.3 + - 0.2.4 + - 0.2.5 + - 0.2.6 + - 0.2.7 + - "1.0" + - 1.0.1 + - 1.0.10 + - 1.0.11 + - 1.0.12 + - 1.0.13 + - 1.0.14 + - 1.0.15 + - 1.0.16 + - 1.0.17 + - 1.0.18 + - 1.0.19 + - 1.0.2 + - 1.0.3 + - 1.0.4 + - 1.0.5 + - 1.0.6 + - 1.0.7 + - 1.0.8 + - 1.0.9 + - 1.0.rc + - 2.0.1 + - 2.0.2 + - 2.0.3 + - 2.1.0 + - 2.1.1 + - 2.1.2 + - 2.1.3 + - 2.1.4 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/09/GHSA-2pqj-h3vj-pqgw/GHSA-2pqj-h3vj-pqgw.json + severity: + - type: CVSS_V3 + score: CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2017-16011 + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2012-6708 + - type: WEB + url: https://github.com/jquery/jquery/commit/05531fc4080ae24070930d15ae0cea7ae056457d + - type: WEB + url: https://web.archive.org/web/20200227132049/http://www.securityfocus.com/bid/102792 + - type: WEB + url: https://snyk.io/vuln/npm:jquery:20120206 + - type: WEB + url: https://security.snyk.io/vuln/SNYK-DOTNET-JQUERY-450223 + - type: WEB + url: https://research.insecurelabs.org/jquery/test + - type: WEB + url: https://lists.apache.org/thread.html/f9bc3e55f4e28d1dcd1a69aae6d53e609a758e34d2869b4d798e13cc@%3Cissues.drill.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/b0656d359c7d40ec9f39c8cc61bca66802ef9a2a12ee199f5b0c1442@%3Cdev.drill.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/519eb0fd45642dcecd9ff74cb3e71c20a4753f7d82e2f07864b5108f@%3Cdev.drill.apache.org%3E + - type: WEB + url: https://help.ecostruxureit.com/display/public/UADCE725/Security+fixes+in+StruxureWare+Data+Center+Expert+v7.6.0 + - type: WEB + url: https://github.com/rubysec/ruby-advisory-db/blob/master/gems/jquery-rails/CVE-2012-6708.yml + - type: WEB + url: https://github.com/rails/jquery-rails/blob/v2.2.0/vendor/assets/javascripts/jquery.js#L67 + - type: WEB + url: https://github.com/rails/jquery-rails/blob/v2.1.4/vendor/assets/javascripts/jquery.js#L59 + - type: PACKAGE + url: https://github.com/jquery/jquery + - type: WEB + url: https://bugs.jquery.com/ticket/9521 + - type: WEB + url: https://bugs.jquery.com/ticket/6429 + - type: WEB + url: https://bugs.jquery.com/ticket/12531 + - type: WEB + url: https://bugs.jquery.com/ticket/11290 + - type: WEB + url: http://lists.opensuse.org/opensuse-security-announce/2020-03/msg00041.html + - type: WEB + url: http://packetstormsecurity.com/files/153237/RetireJS-CORS-Issue-Script-Execution.html + - type: WEB + url: http://packetstormsecurity.com/files/161972/Linksys-EA7500-2.0.8.194281-Cross-Site-Scripting.html + database_specific: + cwe_ids: + - CWE-64 + - CWE-79 + github_reviewed: true + github_reviewed_at: "2020-08-31T18:19:31Z" + nvd_published_at: "2018-01-18T23:29:00Z" + severity: MODERATE + - schema_version: 1.6.0 + id: GHSA-579v-mp3v-rrw5 + modified: 2024-02-22T05:32:53.587602Z + published: 2022-05-14T01:09:51Z + aliases: + - CVE-2011-4969 + summary: jQuery vulnerable to Cross-Site Scripting (XSS) + details: Cross-site scripting (XSS) vulnerability in jQuery before 1.6.3, when using location.hash to select elements, allows remote attackers to inject arbitrary web script or HTML via a crafted tag. + affected: + - package: + ecosystem: npm + name: jquery + purl: pkg:npm/jquery + ranges: + - type: SEMVER + events: + - introduced: "0" + - fixed: 1.6.3 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/05/GHSA-579v-mp3v-rrw5/GHSA-579v-mp3v-rrw5.json + - package: + ecosystem: NuGet + name: jQuery + purl: pkg:nuget/jQuery + ranges: + - type: ECOSYSTEM + events: + - introduced: "0" + - fixed: 1.6.3 + versions: + - 1.4.1 + - 1.4.2 + - 1.4.3 + - 1.4.4 + - 1.5.0 + - 1.5.1 + - 1.5.2 + - 1.6.0 + - 1.6.1 + - 1.6.2 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/05/GHSA-579v-mp3v-rrw5/GHSA-579v-mp3v-rrw5.json + - package: + ecosystem: RubyGems + name: jquery-rails + purl: pkg:gem/jquery-rails + ranges: + - type: ECOSYSTEM + events: + - introduced: "0" + - fixed: 1.0.16 + versions: + - 0.1.1 + - 0.1.2 + - 0.1.3 + - "0.2" + - 0.2.1 + - 0.2.2 + - 0.2.3 + - 0.2.4 + - 0.2.5 + - 0.2.6 + - 0.2.7 + - "1.0" + - 1.0.1 + - 1.0.10 + - 1.0.11 + - 1.0.12 + - 1.0.13 + - 1.0.14 + - 1.0.15 + - 1.0.2 + - 1.0.3 + - 1.0.4 + - 1.0.5 + - 1.0.6 + - 1.0.7 + - 1.0.8 + - 1.0.9 + - 1.0.rc + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/05/GHSA-579v-mp3v-rrw5/GHSA-579v-mp3v-rrw5.json + - package: + ecosystem: Maven + name: org.webjars.npm:jquery + purl: pkg:maven/org.webjars.npm/jquery + ranges: + - type: ECOSYSTEM + events: + - introduced: "0" + - fixed: 1.6.3 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/05/GHSA-579v-mp3v-rrw5/GHSA-579v-mp3v-rrw5.json + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2011-4969 + - type: WEB + url: https://github.com/jquery/jquery/commit/db9e023e62c1ff5d8f21ed9868ab6878da2005e9 + - type: PACKAGE + url: https://github.com/jquery/jquery + - type: WEB + url: https://lists.apache.org/thread.html/ff8dcfe29377088ab655fda9d585dccd5b1f07fabd94ae84fd60a7f8@%3Ccommits.pulsar.apache.org%3E + - type: WEB + url: https://security.netapp.com/advisory/ntap-20190416-0007 + - type: WEB + url: https://security.snyk.io/vuln/SNYK-DOTNET-JQUERY-450224 + - type: WEB + url: http://blog.jquery.com/2011/09/01/jquery-1-6-3-released + - type: WEB + url: http://blog.mindedsecurity.com/2011/07/jquery-is-sink.html + - type: WEB + url: http://bugs.jquery.com/ticket/9521 + - type: WEB + url: http://www.openwall.com/lists/oss-security/2013/01/31/3 + - type: WEB + url: http://www.ubuntu.com/usn/USN-1722-1 + database_specific: + cwe_ids: + - CWE-79 + github_reviewed: true + github_reviewed_at: "2022-09-12T14:46:34Z" + nvd_published_at: "2013-03-08T22:55:00Z" + severity: MODERATE + - schema_version: 1.6.0 + id: GHSA-6c3j-c64m-qhgq + modified: 2024-04-22T19:46:35.478848Z + published: 2019-04-26T16:29:11Z + aliases: + - CVE-2019-11358 + - SNYK-JS-JQUERY-174006 + summary: XSS in jQuery as used in Drupal, Backdrop CMS, and other products + details: jQuery from 1.1.4 until 3.4.0, as used in Drupal, Backdrop CMS, and other products, mishandles `jQuery.extend(true, {}, ...)` because of `Object.prototype` pollution. If an unsanitized source object contained an enumerable `__proto__` property, it could extend the native `Object.prototype`. + affected: + - package: + ecosystem: npm + name: jquery + purl: pkg:npm/jquery + ranges: + - type: SEMVER + events: + - introduced: 1.1.4 + - fixed: 3.4.0 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2019/04/GHSA-6c3j-c64m-qhgq/GHSA-6c3j-c64m-qhgq.json + - package: + ecosystem: RubyGems + name: jquery-rails + purl: pkg:gem/jquery-rails + ranges: + - type: ECOSYSTEM + events: + - introduced: "0" + - fixed: 4.3.4 + versions: + - 0.1.1 + - 0.1.2 + - 0.1.3 + - "0.2" + - 0.2.1 + - 0.2.2 + - 0.2.3 + - 0.2.4 + - 0.2.5 + - 0.2.6 + - 0.2.7 + - "1.0" + - 1.0.1 + - 1.0.10 + - 1.0.11 + - 1.0.12 + - 1.0.13 + - 1.0.14 + - 1.0.15 + - 1.0.16 + - 1.0.17 + - 1.0.18 + - 1.0.19 + - 1.0.2 + - 1.0.3 + - 1.0.4 + - 1.0.5 + - 1.0.6 + - 1.0.7 + - 1.0.8 + - 1.0.9 + - 1.0.rc + - 2.0.1 + - 2.0.2 + - 2.0.3 + - 2.1.0 + - 2.1.1 + - 2.1.2 + - 2.1.3 + - 2.1.4 + - 2.2.0 + - 2.2.1 + - 2.2.2 + - 2.3.0 + - 3.0.0 + - 3.0.1 + - 3.0.2 + - 3.0.3 + - 3.0.4 + - 3.1.0 + - 3.1.1 + - 3.1.2 + - 3.1.3 + - 3.1.4 + - 3.1.5 + - 4.0.0 + - 4.0.0.beta1 + - 4.0.0.beta2 + - 4.0.1 + - 4.0.2 + - 4.0.3 + - 4.0.4 + - 4.0.5 + - 4.1.0 + - 4.1.1 + - 4.2.0 + - 4.2.1 + - 4.2.2 + - 4.3.0 + - 4.3.1 + - 4.3.2 + - 4.3.3 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2019/04/GHSA-6c3j-c64m-qhgq/GHSA-6c3j-c64m-qhgq.json + - package: + ecosystem: NuGet + name: jQuery + purl: pkg:nuget/jQuery + ranges: + - type: ECOSYSTEM + events: + - introduced: 1.1.4 + - fixed: 3.4.0 + versions: + - 1.10.0 + - 1.10.0.1 + - 1.10.1 + - 1.10.2 + - 1.11.0 + - 1.11.1 + - 1.11.2 + - 1.11.3 + - 1.12.0 + - 1.12.1 + - 1.12.2 + - 1.12.3 + - 1.12.4 + - 1.4.1 + - 1.4.2 + - 1.4.3 + - 1.4.4 + - 1.5.0 + - 1.5.1 + - 1.5.2 + - 1.6.0 + - 1.6.1 + - 1.6.2 + - 1.6.3 + - 1.6.4 + - 1.7.0 + - 1.7.1 + - 1.7.1.1 + - 1.7.2 + - 1.8.0 + - 1.8.1 + - 1.8.2 + - 1.8.3 + - 1.9.0 + - 1.9.1 + - 2.0.0 + - 2.0.1 + - 2.0.1.1 + - 2.0.2 + - 2.0.3 + - 2.1.0 + - 2.1.1 + - 2.1.2 + - 2.1.3 + - 2.1.4 + - 2.2.0 + - 2.2.1 + - 2.2.2 + - 2.2.3 + - 2.2.4 + - 3.0.0 + - 3.0.0.1 + - 3.1.0 + - 3.1.1 + - 3.2.1 + - 3.3.1 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2019/04/GHSA-6c3j-c64m-qhgq/GHSA-6c3j-c64m-qhgq.json + - package: + ecosystem: PyPI + name: django + purl: pkg:pypi/django + ranges: + - type: ECOSYSTEM + events: + - introduced: 2.0a1 + - fixed: 2.1.9 + versions: + - "2.0" + - 2.0.1 + - 2.0.10 + - 2.0.12 + - 2.0.13 + - 2.0.2 + - 2.0.3 + - 2.0.4 + - 2.0.5 + - 2.0.6 + - 2.0.7 + - 2.0.8 + - 2.0.9 + - 2.0a1 + - 2.0b1 + - 2.0rc1 + - "2.1" + - 2.1.1 + - 2.1.2 + - 2.1.3 + - 2.1.4 + - 2.1.5 + - 2.1.7 + - 2.1.8 + - 2.1a1 + - 2.1b1 + - 2.1rc1 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2019/04/GHSA-6c3j-c64m-qhgq/GHSA-6c3j-c64m-qhgq.json + - package: + ecosystem: PyPI + name: django + purl: pkg:pypi/django + ranges: + - type: ECOSYSTEM + events: + - introduced: 2.2a1 + - fixed: 2.2.2 + versions: + - "2.2" + - 2.2.1 + - 2.2a1 + - 2.2b1 + - 2.2rc1 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2019/04/GHSA-6c3j-c64m-qhgq/GHSA-6c3j-c64m-qhgq.json + - package: + ecosystem: Maven + name: org.webjars.npm:jquery + purl: pkg:maven/org.webjars.npm/jquery + ranges: + - type: ECOSYSTEM + events: + - introduced: 1.1.4 + - fixed: 3.4.0 + versions: + - 1.11.0 + - 1.11.1 + - 1.11.3 + - 1.12.1 + - 1.12.2 + - 1.12.3 + - 1.12.4 + - 1.7.2 + - 1.7.3 + - 1.8.2 + - 1.8.3 + - 1.9.1 + - 2.1.0 + - 2.1.1 + - 2.1.1-rc1 + - 2.1.1-rc2 + - 2.1.3 + - 2.1.4 + - 2.2.0 + - 2.2.1 + - 2.2.2 + - 2.2.3 + - 2.2.4 + - 3.0.0 + - 3.0.0-alpha1 + - 3.0.0-beta1 + - 3.0.0-rc1 + - 3.1.0 + - 3.1.1 + - 3.2.0 + - 3.2.1 + - 3.3.0 + - 3.3.1 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2019/04/GHSA-6c3j-c64m-qhgq/GHSA-6c3j-c64m-qhgq.json + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N + references: + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2019-11358 + - type: WEB + url: https://github.com/jquery/jquery/pull/4333 + - type: WEB + url: https://github.com/jquery/jquery/commit/753d591aea698e57d6db58c9f722cd0808619b1b + - type: WEB + url: https://github.com/django/django/commit/34ec52269ade54af31a021b12969913129571a3f + - type: WEB + url: https://github.com/django/django/commit/95649bc08547a878cebfa1d019edec8cb1b80829 + - type: WEB + url: https://github.com/django/django/commit/baaf187a4e354bf3976c51e2c83a0d2f8ee6e6ad + - type: WEB + url: https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/WZW27UCJ5CYFL4KFFFMYMIBNMIU2ALG5 + - type: WEB + url: https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/4UOAZIFCSZ3ENEFOR5IXX6NFAD3HV7FA + - type: WEB + url: https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/5IABSKTYZ5JUGL735UKGXL5YPRYOPUYI + - type: WEB + url: https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/KYH3OAGR2RTCHRA5NOKX2TES7SNQMWGO + - type: WEB + url: https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/QV3PKZC3PQCO3273HAT76PAQZFBEO4KP + - type: WEB + url: https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/RLXRX23725JL366CNZGJZ7AQQB7LHQ6F + - type: WEB + url: https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/WZW27UCJ5CYFL4KFFFMYMIBNMIU2ALG5 + - type: WEB + url: https://seclists.org/bugtraq/2019/Apr/32 + - type: WEB + url: https://seclists.org/bugtraq/2019/Jun/12 + - type: WEB + url: https://seclists.org/bugtraq/2019/May/18 + - type: WEB + url: https://www.tenable.com/security/tns-2020-02 + - type: WEB + url: https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/RLXRX23725JL366CNZGJZ7AQQB7LHQ6F + - type: WEB + url: https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/QV3PKZC3PQCO3273HAT76PAQZFBEO4KP + - type: WEB + url: https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/KYH3OAGR2RTCHRA5NOKX2TES7SNQMWGO + - type: WEB + url: https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/5IABSKTYZ5JUGL735UKGXL5YPRYOPUYI + - type: WEB + url: https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/4UOAZIFCSZ3ENEFOR5IXX6NFAD3HV7FA + - type: WEB + url: https://lists.debian.org/debian-lts-announce/2023/08/msg00040.html + - type: WEB + url: https://lists.debian.org/debian-lts-announce/2020/02/msg00024.html + - type: WEB + url: https://lists.debian.org/debian-lts-announce/2019/05/msg00029.html + - type: WEB + url: https://lists.debian.org/debian-lts-announce/2019/05/msg00006.html + - type: WEB + url: https://lists.apache.org/thread.html/rca37935d661f4689cb4119f1b3b224413b22be161b678e6e6ce0c69b@%3Ccommits.nifi.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/rca37935d661f4689cb4119f1b3b224413b22be161b678e6e6ce0c69b%40%3Ccommits.nifi.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/rac25da84ecdcd36f6de5ad0d255f4e967209bbbebddb285e231da37d@%3Cissues.flink.apache.org%3E + - type: WEB + url: https://www.tenable.com/security/tns-2019-08 + - type: WEB + url: https://www.synology.com/security/advisory/Synology_SA_19_19 + - type: WEB + url: https://www.privacy-wise.com/mitigating-cve-2019-11358-in-old-versions-of-jquery + - type: WEB + url: https://www.oracle.com/technetwork/security-advisory/cpuoct2019-5072832.html + - type: WEB + url: https://www.oracle.com/technetwork/security-advisory/cpujul2019-5072835.html + - type: WEB + url: https://www.oracle.com/security-alerts/cpuoct2021.html + - type: WEB + url: https://www.oracle.com/security-alerts/cpuoct2020.html + - type: WEB + url: https://www.oracle.com/security-alerts/cpujul2020.html + - type: WEB + url: https://www.oracle.com/security-alerts/cpujan2022.html + - type: WEB + url: https://www.oracle.com/security-alerts/cpujan2021.html + - type: WEB + url: https://www.oracle.com/security-alerts/cpujan2020.html + - type: WEB + url: https://www.oracle.com/security-alerts/cpuapr2020.html + - type: WEB + url: https://www.oracle.com/security-alerts/cpuApr2021.html + - type: WEB + url: https://www.oracle.com//security-alerts/cpujul2021.html + - type: WEB + url: https://www.drupal.org/sa-core-2019-006 + - type: WEB + url: https://www.djangoproject.com/weblog/2019/jun/03/security-releases + - type: WEB + url: https://www.debian.org/security/2019/dsa-4460 + - type: WEB + url: https://www.debian.org/security/2019/dsa-4434 + - type: WEB + url: https://web.archive.org/web/20190824065237/http://www.securityfocus.com/bid/108023 + - type: WEB + url: https://supportportal.juniper.net/s/article/2021-07-Security-Bulletin-Junos-OS-Multiple-J-Web-vulnerabilities-resolved-in-Junos-OS-21-2R1 + - type: WEB + url: https://snyk.io/vuln/SNYK-JS-JQUERY-174006 + - type: WEB + url: https://security.snyk.io/vuln/SNYK-DOTNET-JQUERY-450226 + - type: WEB + url: https://security.netapp.com/advisory/ntap-20190919-0001 + - type: WEB + url: https://lists.apache.org/thread.html/b0656d359c7d40ec9f39c8cc61bca66802ef9a2a12ee199f5b0c1442@%3Cdev.drill.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/b0656d359c7d40ec9f39c8cc61bca66802ef9a2a12ee199f5b0c1442%40%3Cdev.drill.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/88fb0362fd40e5b605ea8149f63241537b8b6fb5bfa315391fc5cbb7@%3Ccommits.airflow.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/88fb0362fd40e5b605ea8149f63241537b8b6fb5bfa315391fc5cbb7%40%3Ccommits.airflow.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/6097cdbd6f0a337bedd9bb5cc441b2d525ff002a96531de367e4259f@%3Ccommits.airflow.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/6097cdbd6f0a337bedd9bb5cc441b2d525ff002a96531de367e4259f%40%3Ccommits.airflow.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/5928aa293e39d248266472210c50f176cac1535220f2486e6a7fa844@%3Ccommits.airflow.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/5928aa293e39d248266472210c50f176cac1535220f2486e6a7fa844%40%3Ccommits.airflow.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/519eb0fd45642dcecd9ff74cb3e71c20a4753f7d82e2f07864b5108f@%3Cdev.drill.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/519eb0fd45642dcecd9ff74cb3e71c20a4753f7d82e2f07864b5108f%40%3Cdev.drill.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/08720ef215ee7ab3386c05a1a90a7d1c852bf0706f176a7816bf65fc@%3Ccommits.airflow.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/08720ef215ee7ab3386c05a1a90a7d1c852bf0706f176a7816bf65fc%40%3Ccommits.airflow.apache.org%3E + - type: WEB + url: https://kb.pulsesecure.net/articles/Pulse_Security_Advisories/SA44601 + - type: WEB + url: https://github.com/rubysec/ruby-advisory-db/blob/master/gems/jquery-rails/CVE-2019-11358.yml + - type: WEB + url: https://github.com/rails/jquery-rails/blob/master/CHANGELOG.md#434 + - type: PACKAGE + url: https://github.com/jquery/jquery + - type: WEB + url: https://blog.jquery.com/2019/04/10/jquery-3-4-0-released + - type: WEB + url: https://backdropcms.org/security/backdrop-sa-core-2019-009 + - type: WEB + url: https://access.redhat.com/errata/RHSA-2019:3024 + - type: WEB + url: https://access.redhat.com/errata/RHSA-2019:3023 + - type: WEB + url: https://access.redhat.com/errata/RHSA-2019:2587 + - type: WEB + url: https://access.redhat.com/errata/RHSA-2019:1456 + - type: WEB + url: https://access.redhat.com/errata/RHBA-2019:1570 + - type: WEB + url: https://lists.apache.org/thread.html/rac25da84ecdcd36f6de5ad0d255f4e967209bbbebddb285e231da37d%40%3Cissues.flink.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/r7e8ebccb7c022e41295f6fdb7b971209b83702339f872ddd8cf8bf73@%3Cissues.flink.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/r7e8ebccb7c022e41295f6fdb7b971209b83702339f872ddd8cf8bf73%40%3Cissues.flink.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/r7d64895cc4dff84d0becfc572b20c0e4bf9bfa7b10c6f5f73e783734@%3Cdev.storm.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/r7d64895cc4dff84d0becfc572b20c0e4bf9bfa7b10c6f5f73e783734%40%3Cdev.storm.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/r7aac081cbddb6baa24b75e74abf0929bf309b176755a53e3ed810355@%3Cdev.flink.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/r7aac081cbddb6baa24b75e74abf0929bf309b176755a53e3ed810355%40%3Cdev.flink.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/r41b5bfe009c845f67d4f68948cc9419ac2d62e287804aafd72892b08@%3Cissues.flink.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/r41b5bfe009c845f67d4f68948cc9419ac2d62e287804aafd72892b08%40%3Cissues.flink.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/r38f0d1aa3c923c22977fe7376508f030f22e22c1379fbb155bf29766@%3Cdev.syncope.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/r38f0d1aa3c923c22977fe7376508f030f22e22c1379fbb155bf29766%40%3Cdev.syncope.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/r2baacab6e0acb5a2092eb46ae04fd6c3e8277b4fd79b1ffb7f3254fa@%3Cissues.flink.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/r2baacab6e0acb5a2092eb46ae04fd6c3e8277b4fd79b1ffb7f3254fa%40%3Cissues.flink.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/r2041a75d3fc09dec55adfd95d598b38d22715303f65c997c054844c9@%3Cissues.flink.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/r2041a75d3fc09dec55adfd95d598b38d22715303f65c997c054844c9%40%3Cissues.flink.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/f9bc3e55f4e28d1dcd1a69aae6d53e609a758e34d2869b4d798e13cc@%3Cissues.drill.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/f9bc3e55f4e28d1dcd1a69aae6d53e609a758e34d2869b4d798e13cc%40%3Cissues.drill.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/bcce5a9c532b386c68dab2f6b3ce8b0cc9b950ec551766e76391caa3@%3Ccommits.nifi.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/bcce5a9c532b386c68dab2f6b3ce8b0cc9b950ec551766e76391caa3%40%3Ccommits.nifi.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/ba79cf1658741e9f146e4c59b50aee56656ea95d841d358d006c18b6@%3Ccommits.roller.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/ba79cf1658741e9f146e4c59b50aee56656ea95d841d358d006c18b6%40%3Ccommits.roller.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/b736d0784cf02f5a30fbb4c5902762a15ad6d47e17e2c5a17b7d6205@%3Ccommits.airflow.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/b736d0784cf02f5a30fbb4c5902762a15ad6d47e17e2c5a17b7d6205%40%3Ccommits.airflow.apache.org%3E + - type: WEB + url: http://lists.opensuse.org/opensuse-security-announce/2019-08/msg00006.html + - type: WEB + url: http://lists.opensuse.org/opensuse-security-announce/2019-08/msg00025.html + - type: WEB + url: http://packetstormsecurity.com/files/152787/dotCMS-5.1.1-Vulnerable-Dependencies.html + - type: WEB + url: http://packetstormsecurity.com/files/153237/RetireJS-CORS-Issue-Script-Execution.html + - type: WEB + url: http://packetstormsecurity.com/files/156743/OctoberCMS-Insecure-Dependencies.html + - type: WEB + url: http://seclists.org/fulldisclosure/2019/May/10 + - type: WEB + url: http://seclists.org/fulldisclosure/2019/May/11 + - type: WEB + url: http://seclists.org/fulldisclosure/2019/May/13 + - type: WEB + url: http://www.openwall.com/lists/oss-security/2019/06/03/2 + - type: WEB + url: http://www.securityfocus.com/bid/108023 + database_specific: + cwe_ids: + - CWE-1321 + - CWE-79 + github_reviewed: true + github_reviewed_at: "2019-04-26T16:28:41Z" + nvd_published_at: "2019-04-20T00:29:00Z" + severity: MODERATE + - schema_version: 1.6.0 + id: GHSA-gxr4-xjj5-5px2 + modified: 2024-03-12T05:16:35.932904Z + published: 2020-04-29T22:18:55Z + aliases: + - BIT-drupal-2020-11022 + - CVE-2020-11022 + summary: Potential XSS vulnerability in jQuery + details: |- + ### Impact + Passing HTML from untrusted sources - even after sanitizing it - to one of jQuery's DOM manipulation methods (i.e. `.html()`, `.append()`, and others) may execute untrusted code. + + ### Patches + This problem is patched in jQuery 3.5.0. + + ### Workarounds + To workaround the issue without upgrading, adding the following to your code: + + ```js + jQuery.htmlPrefilter = function( html ) { + return html; + }; + ``` + + You need to use at least jQuery 1.12/2.2 or newer to be able to apply this workaround. + + ### References + https://blog.jquery.com/2020/04/10/jquery-3-5-0-released/ + https://jquery.com/upgrade-guide/3.5/ + + ### For more information + If you have any questions or comments about this advisory, search for a relevant issue in [the jQuery repo](https://github.com/jquery/jquery/issues). If you don't find an answer, open a new issue. + affected: + - package: + ecosystem: npm + name: jquery + purl: pkg:npm/jquery + ranges: + - type: SEMVER + events: + - introduced: 1.2.0 + - fixed: 3.5.0 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/04/GHSA-gxr4-xjj5-5px2/GHSA-gxr4-xjj5-5px2.json + - package: + ecosystem: NuGet + name: jquery + purl: pkg:nuget/jquery + ranges: + - type: ECOSYSTEM + events: + - introduced: 1.2.0 + - fixed: 3.5.0 + versions: + - 1.10.0 + - 1.10.0.1 + - 1.10.1 + - 1.10.2 + - 1.11.0 + - 1.11.1 + - 1.11.2 + - 1.11.3 + - 1.12.0 + - 1.12.1 + - 1.12.2 + - 1.12.3 + - 1.12.4 + - 1.4.1 + - 1.4.2 + - 1.4.3 + - 1.4.4 + - 1.5.0 + - 1.5.1 + - 1.5.2 + - 1.6.0 + - 1.6.1 + - 1.6.2 + - 1.6.3 + - 1.6.4 + - 1.7.0 + - 1.7.1 + - 1.7.1.1 + - 1.7.2 + - 1.8.0 + - 1.8.1 + - 1.8.2 + - 1.8.3 + - 1.9.0 + - 1.9.1 + - 2.0.0 + - 2.0.1 + - 2.0.1.1 + - 2.0.2 + - 2.0.3 + - 2.1.0 + - 2.1.1 + - 2.1.2 + - 2.1.3 + - 2.1.4 + - 2.2.0 + - 2.2.1 + - 2.2.2 + - 2.2.3 + - 2.2.4 + - 3.0.0 + - 3.0.0.1 + - 3.1.0 + - 3.1.1 + - 3.2.1 + - 3.3.1 + - 3.4.0 + - 3.4.1 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/04/GHSA-gxr4-xjj5-5px2/GHSA-gxr4-xjj5-5px2.json + - package: + ecosystem: RubyGems + name: jquery-rails + purl: pkg:gem/jquery-rails + ranges: + - type: ECOSYSTEM + events: + - introduced: "0" + - fixed: 4.4.0 + versions: + - 0.1.1 + - 0.1.2 + - 0.1.3 + - "0.2" + - 0.2.1 + - 0.2.2 + - 0.2.3 + - 0.2.4 + - 0.2.5 + - 0.2.6 + - 0.2.7 + - "1.0" + - 1.0.1 + - 1.0.10 + - 1.0.11 + - 1.0.12 + - 1.0.13 + - 1.0.14 + - 1.0.15 + - 1.0.16 + - 1.0.17 + - 1.0.18 + - 1.0.19 + - 1.0.2 + - 1.0.3 + - 1.0.4 + - 1.0.5 + - 1.0.6 + - 1.0.7 + - 1.0.8 + - 1.0.9 + - 1.0.rc + - 2.0.1 + - 2.0.2 + - 2.0.3 + - 2.1.0 + - 2.1.1 + - 2.1.2 + - 2.1.3 + - 2.1.4 + - 2.2.0 + - 2.2.1 + - 2.2.2 + - 2.3.0 + - 3.0.0 + - 3.0.1 + - 3.0.2 + - 3.0.3 + - 3.0.4 + - 3.1.0 + - 3.1.1 + - 3.1.2 + - 3.1.3 + - 3.1.4 + - 3.1.5 + - 4.0.0 + - 4.0.0.beta1 + - 4.0.0.beta2 + - 4.0.1 + - 4.0.2 + - 4.0.3 + - 4.0.4 + - 4.0.5 + - 4.1.0 + - 4.1.1 + - 4.2.0 + - 4.2.1 + - 4.2.2 + - 4.3.0 + - 4.3.1 + - 4.3.2 + - 4.3.3 + - 4.3.4 + - 4.3.5 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/04/GHSA-gxr4-xjj5-5px2/GHSA-gxr4-xjj5-5px2.json + - package: + ecosystem: Maven + name: org.webjars.npm:jquery + purl: pkg:maven/org.webjars.npm/jquery + ranges: + - type: ECOSYSTEM + events: + - introduced: 1.2.0 + - fixed: 3.5.0 + versions: + - 1.11.0 + - 1.11.1 + - 1.11.3 + - 1.12.1 + - 1.12.2 + - 1.12.3 + - 1.12.4 + - 1.7.2 + - 1.7.3 + - 1.8.2 + - 1.8.3 + - 1.9.1 + - 2.1.0 + - 2.1.1 + - 2.1.1-rc1 + - 2.1.1-rc2 + - 2.1.3 + - 2.1.4 + - 2.2.0 + - 2.2.1 + - 2.2.2 + - 2.2.3 + - 2.2.4 + - 3.0.0 + - 3.0.0-alpha1 + - 3.0.0-beta1 + - 3.0.0-rc1 + - 3.1.0 + - 3.1.1 + - 3.2.0 + - 3.2.1 + - 3.3.0 + - 3.3.1 + - 3.4.0 + - 3.4.1 + database_specific: + source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/04/GHSA-gxr4-xjj5-5px2/GHSA-gxr4-xjj5-5px2.json + severity: + - type: CVSS_V3 + score: CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:L/A:N + references: + - type: WEB + url: https://github.com/jquery/jquery/security/advisories/GHSA-gxr4-xjj5-5px2 + - type: ADVISORY + url: https://nvd.nist.gov/vuln/detail/CVE-2020-11022 + - type: WEB + url: https://github.com/jquery/jquery/commit/1d61fd9407e6fbe82fe55cb0b938307aa0791f77 + - type: WEB + url: https://blog.jquery.com/2020/04/10/jquery-3-5-0-released + - type: WEB + url: https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/SFP4UK4EGP4AFH2MWYJ5A5Z4I7XVFQ6B + - type: WEB + url: https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/VOE7P7APPRQKD4FGNHBKJPDY6FFCOH3W + - type: WEB + url: https://security.gentoo.org/glsa/202007-03 + - type: WEB + url: https://security.netapp.com/advisory/ntap-20200511-0006 + - type: WEB + url: https://www.debian.org/security/2020/dsa-4693 + - type: WEB + url: https://www.drupal.org/sa-core-2020-002 + - type: WEB + url: https://www.npmjs.com/advisories/1518 + - type: WEB + url: https://www.oracle.com//security-alerts/cpujul2021.html + - type: WEB + url: https://www.oracle.com/security-alerts/cpuApr2021.html + - type: WEB + url: https://www.oracle.com/security-alerts/cpuapr2022.html + - type: WEB + url: https://www.oracle.com/security-alerts/cpujan2021.html + - type: WEB + url: https://www.oracle.com/security-alerts/cpujan2022.html + - type: WEB + url: https://www.oracle.com/security-alerts/cpujul2020.html + - type: WEB + url: https://www.oracle.com/security-alerts/cpujul2022.html + - type: WEB + url: https://www.oracle.com/security-alerts/cpuoct2020.html + - type: WEB + url: https://www.oracle.com/security-alerts/cpuoct2021.html + - type: WEB + url: https://www.tenable.com/security/tns-2020-10 + - type: WEB + url: https://www.tenable.com/security/tns-2020-11 + - type: WEB + url: https://www.tenable.com/security/tns-2021-02 + - type: WEB + url: https://www.tenable.com/security/tns-2021-10 + - type: ADVISORY + url: https://github.com/advisories/GHSA-gxr4-xjj5-5px2 + - type: PACKAGE + url: https://github.com/jquery/jquery + - type: WEB + url: https://github.com/jquery/jquery/releases/tag/3.5.0 + - type: WEB + url: https://github.com/rubysec/ruby-advisory-db/blob/master/gems/jquery-rails/CVE-2020-11022.yml + - type: WEB + url: https://jquery.com/upgrade-guide/3.5 + - type: WEB + url: https://lists.apache.org/thread.html/r0483ba0072783c2e1bfea613984bfb3c86e73ba8879d780dc1cc7d36@%3Cissues.flink.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/r49ce4243b4738dd763caeb27fa8ad6afb426ae3e8c011ff00b8b1f48@%3Cissues.flink.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/r54565a8f025c7c4f305355fdfd75b68eca442eebdb5f31c2e7d977ae@%3Cissues.flink.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/r564585d97bc069137e64f521e68ba490c7c9c5b342df5d73c49a0760@%3Cissues.flink.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/r706cfbc098420f7113968cc377247ec3d1439bce42e679c11c609e2d@%3Cissues.flink.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/r8f70b0f65d6bedf316ecd899371fd89e65333bc988f6326d2956735c@%3Cissues.flink.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/rbb448222ba62c430e21e13f940be4cb5cfc373cd3bce56b48c0ffa67@%3Cdev.flink.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/rdf44341677cf7eec7e9aa96dcf3f37ed709544863d619cca8c36f133@%3Ccommits.airflow.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/re4ae96fa5c1a2fe71ccbb7b7ac1538bd0cb677be270a2bf6e2f8d108@%3Cissues.flink.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/rede9cfaa756e050a3d83045008f84a62802fc68c17f2b4eabeaae5e4@%3Cissues.flink.apache.org%3E + - type: WEB + url: https://lists.apache.org/thread.html/ree3bd8ddb23df5fa4e372d11c226830ea3650056b1059f3965b3fce2@%3Cissues.flink.apache.org%3E + - type: WEB + url: https://lists.debian.org/debian-lts-announce/2021/03/msg00033.html + - type: WEB + url: https://lists.debian.org/debian-lts-announce/2023/08/msg00040.html + - type: WEB + url: https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/AVKYXLWCLZBV2N7M46KYK4LVA5OXWPBY + - type: WEB + url: https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/QPN2L2XVQGUA2V5HNQJWHK3APSK3VN7K + - type: WEB + url: https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/SAPQVX3XDNPGFT26QAQ6AJIXZZBZ4CD4 + - type: WEB + url: http://lists.opensuse.org/opensuse-security-announce/2020-07/msg00067.html + - type: WEB + url: http://lists.opensuse.org/opensuse-security-announce/2020-07/msg00085.html + - type: WEB + url: http://lists.opensuse.org/opensuse-security-announce/2020-11/msg00039.html + - type: WEB + url: http://packetstormsecurity.com/files/162159/jQuery-1.2-Cross-Site-Scripting.html + database_specific: + cwe_ids: + - CWE-79 + github_reviewed: true + github_reviewed_at: "2020-04-29T22:18:37Z" + nvd_published_at: "2020-04-29T22:15:00Z" + severity: MODERATE + - schema_version: 1.6.0 + id: GHSA-jpcq-cgw6-v4j6 + modified: 2024-03-10T05:16:52.161176Z + published: 2020-04-29T22:19:14Z + aliases: + - BIT-drupal-2020-11023 + - CVE-2020-11023 + summary: Potential XSS vulnerability in jQuery + details: |- + ### Impact + Passing HTML containing `
- + SÃļren Tempel <soeren+alpine@soeren-tempel.net> busybox - 1.35.0-r29 + 1.36.1-r27 Size optimized toolbox of many common UNIX utilities GPL-2.0-only - cpe:2.3:a:busybox:busybox:1.35.0-r29:*:*:*:*:*:*:* - pkg:apk/alpine/busybox@1.35.0-r29?arch=x86_64&upstream=busybox&distro=alpine-3.17.2 + cpe:2.3:a:busybox:busybox:1.36.1-r27:*:*:*:*:*:*:* + pkg:apk/alpine/busybox@1.36.1-r27?arch=x86_64&upstream=busybox&distro=alpine-3.17.2 https://busybox.net/ @@ -208,24 +208,24 @@ 1dbf7a793afae640ea643a055b6dd4f430ac116b 962560 busybox - cmd:busybox=1.35.0-r29 + cmd:busybox=1.36.1-r27 Q1NN3sp0yr99btRysqty3nQUrWHaY= so:libc.musl-x86_64.so.1 509600
- + SÃļren Tempel <soeren+alpine@soeren-tempel.net> busybox-binsh - 1.35.0-r29 + 1.36.1-r27 busybox ash /bin/sh GPL-2.0-only - cpe:2.3:a:busybox-binsh:busybox-binsh:1.35.0-r29:*:*:*:*:*:*:* - pkg:apk/alpine/busybox-binsh@1.35.0-r29?arch=x86_64&upstream=busybox&distro=alpine-3.17.2 + cpe:2.3:a:busybox-binsh:busybox-binsh:1.36.1-r27:*:*:*:*:*:*:* + pkg:apk/alpine/busybox-binsh@1.36.1-r27?arch=x86_64&upstream=busybox&distro=alpine-3.17.2 https://busybox.net/ @@ -235,20 +235,20 @@ apkdb-cataloger ApkMetadata apk - cpe:2.3:a:busybox-binsh:busybox_binsh:1.35.0-r29:*:*:*:*:*:*:* - cpe:2.3:a:busybox_binsh:busybox-binsh:1.35.0-r29:*:*:*:*:*:*:* - cpe:2.3:a:busybox_binsh:busybox_binsh:1.35.0-r29:*:*:*:*:*:*:* - cpe:2.3:a:busybox:busybox-binsh:1.35.0-r29:*:*:*:*:*:*:* - cpe:2.3:a:busybox:busybox_binsh:1.35.0-r29:*:*:*:*:*:*:* + cpe:2.3:a:busybox-binsh:busybox_binsh:1.36.1-r27:*:*:*:*:*:*:* + cpe:2.3:a:busybox_binsh:busybox-binsh:1.36.1-r27:*:*:*:*:*:*:* + cpe:2.3:a:busybox_binsh:busybox_binsh:1.36.1-r27:*:*:*:*:*:*:* + cpe:2.3:a:busybox:busybox-binsh:1.36.1-r27:*:*:*:*:*:*:* + cpe:2.3:a:busybox:busybox_binsh:1.36.1-r27:*:*:*:*:*:*:* sha256:7cd52847ad775a5ddc4b58326cf884beee34544296402c6292ed76474c686d39 /lib/apk/db/installed 1dbf7a793afae640ea643a055b6dd4f430ac116b 8192 busybox /bin/sh - cmd:sh=1.35.0-r29 + cmd:sh=1.36.1-r27 Q1miWwyhWKXVEiRYLhmArV1TKMs6A= - busybox=1.35.0-r29 + busybox=1.36.1-r27 1547 @@ -510,18 +510,18 @@ 37687 - + SÃļren Tempel <soeren+alpine@soeren-tempel.net> ssl_client - 1.35.0-r29 + 1.36.1-r27 EXternal ssl_client for busybox wget GPL-2.0-only - cpe:2.3:a:ssl-client:ssl-client:1.35.0-r29:*:*:*:*:*:*:* - pkg:apk/alpine/ssl_client@1.35.0-r29?arch=x86_64&upstream=busybox&distro=alpine-3.17.2 + cpe:2.3:a:ssl-client:ssl-client:1.36.1-r27:*:*:*:*:*:*:* + pkg:apk/alpine/ssl_client@1.36.1-r27?arch=x86_64&upstream=busybox&distro=alpine-3.17.2 https://busybox.net/ @@ -531,17 +531,17 @@ apkdb-cataloger ApkMetadata apk - cpe:2.3:a:ssl-client:ssl_client:1.35.0-r29:*:*:*:*:*:*:* - cpe:2.3:a:ssl_client:ssl-client:1.35.0-r29:*:*:*:*:*:*:* - cpe:2.3:a:ssl_client:ssl_client:1.35.0-r29:*:*:*:*:*:*:* - cpe:2.3:a:ssl:ssl-client:1.35.0-r29:*:*:*:*:*:*:* - cpe:2.3:a:ssl:ssl_client:1.35.0-r29:*:*:*:*:*:*:* + cpe:2.3:a:ssl-client:ssl_client:1.36.1-r27:*:*:*:*:*:*:* + cpe:2.3:a:ssl_client:ssl-client:1.36.1-r27:*:*:*:*:*:*:* + cpe:2.3:a:ssl_client:ssl_client:1.36.1-r27:*:*:*:*:*:*:* + cpe:2.3:a:ssl:ssl-client:1.36.1-r27:*:*:*:*:*:*:* + cpe:2.3:a:ssl:ssl_client:1.36.1-r27:*:*:*:*:*:*:* sha256:7cd52847ad775a5ddc4b58326cf884beee34544296402c6292ed76474c686d39 /lib/apk/db/installed 1dbf7a793afae640ea643a055b6dd4f430ac116b 28672 busybox - cmd:ssl_client=1.35.0-r29 + cmd:ssl_client=1.36.1-r27 Q1QuqZjeP6XG85I29tOiCWofL8Cj0= so:libc.musl-x86_64.so.1 so:libcrypto.so.3 @@ -601,4 +601,4 @@ - \ No newline at end of file + diff --git a/cmd/osv-scanner/fixtures/sbom-insecure/alpine.cdx.xml b/cmd/osv-scanner/fixtures/sbom-insecure/alpine.cdx.xml index f70df0c6df8..1b813559895 100644 --- a/cmd/osv-scanner/fixtures/sbom-insecure/alpine.cdx.xml +++ b/cmd/osv-scanner/fixtures/sbom-insecure/alpine.cdx.xml @@ -182,18 +182,18 @@ /bin/busybox - + SÃļren Tempel <soeren+alpine@soeren-tempel.net> busybox - 1.35.0-r29 + 1.36.1-r27 Size optimized toolbox of many common UNIX utilities GPL-2.0-only - cpe:2.3:a:busybox:busybox:1.35.0-r29:*:*:*:*:*:*:* - pkg:apk/alpine/busybox@1.35.0-r29?arch=x86_64&upstream=busybox&distro=alpine-3.17.2 + cpe:2.3:a:busybox:busybox:1.36.1-r27:*:*:*:*:*:*:* + pkg:apk/alpine/busybox@1.36.1-r27?arch=x86_64&upstream=busybox&distro=alpine-3.17.2 https://busybox.net/ @@ -208,24 +208,24 @@ 1dbf7a793afae640ea643a055b6dd4f430ac116b 962560 busybox - cmd:busybox=1.35.0-r29 + cmd:busybox=1.36.1-r27 Q1NN3sp0yr99btRysqty3nQUrWHaY= so:libc.musl-x86_64.so.1 509600 - + SÃļren Tempel <soeren+alpine@soeren-tempel.net> busybox-binsh - 1.35.0-r29 + 1.36.1-r27 busybox ash /bin/sh GPL-2.0-only - cpe:2.3:a:busybox-binsh:busybox-binsh:1.35.0-r29:*:*:*:*:*:*:* - pkg:apk/alpine/busybox-binsh@1.35.0-r29?arch=x86_64&upstream=busybox&distro=alpine-3.17.2 + cpe:2.3:a:busybox-binsh:busybox-binsh:1.36.1-r27:*:*:*:*:*:*:* + pkg:apk/alpine/busybox-binsh@1.36.1-r27?arch=x86_64&upstream=busybox&distro=alpine-3.17.2 https://busybox.net/ @@ -235,20 +235,20 @@ apkdb-cataloger ApkMetadata apk - cpe:2.3:a:busybox-binsh:busybox_binsh:1.35.0-r29:*:*:*:*:*:*:* - cpe:2.3:a:busybox_binsh:busybox-binsh:1.35.0-r29:*:*:*:*:*:*:* - cpe:2.3:a:busybox_binsh:busybox_binsh:1.35.0-r29:*:*:*:*:*:*:* - cpe:2.3:a:busybox:busybox-binsh:1.35.0-r29:*:*:*:*:*:*:* - cpe:2.3:a:busybox:busybox_binsh:1.35.0-r29:*:*:*:*:*:*:* + cpe:2.3:a:busybox-binsh:busybox_binsh:1.36.1-r27:*:*:*:*:*:*:* + cpe:2.3:a:busybox_binsh:busybox-binsh:1.36.1-r27:*:*:*:*:*:*:* + cpe:2.3:a:busybox_binsh:busybox_binsh:1.36.1-r27:*:*:*:*:*:*:* + cpe:2.3:a:busybox:busybox-binsh:1.36.1-r27:*:*:*:*:*:*:* + cpe:2.3:a:busybox:busybox_binsh:1.36.1-r27:*:*:*:*:*:*:* sha256:7cd52847ad775a5ddc4b58326cf884beee34544296402c6292ed76474c686d39 /lib/apk/db/installed 1dbf7a793afae640ea643a055b6dd4f430ac116b 8192 busybox /bin/sh - cmd:sh=1.35.0-r29 + cmd:sh=1.36.1-r27 Q1miWwyhWKXVEiRYLhmArV1TKMs6A= - busybox=1.35.0-r29 + busybox=1.36.1-r27 1547 @@ -510,18 +510,18 @@ 37687 - + SÃļren Tempel <soeren+alpine@soeren-tempel.net> ssl_client - 1.35.0-r29 + 1.36.1-r27 EXternal ssl_client for busybox wget GPL-2.0-only - cpe:2.3:a:ssl-client:ssl-client:1.35.0-r29:*:*:*:*:*:*:* - pkg:apk/alpine/ssl_client@1.35.0-r29?arch=x86_64&upstream=busybox&distro=alpine-3.17.2 + cpe:2.3:a:ssl-client:ssl-client:1.36.1-r27:*:*:*:*:*:*:* + pkg:apk/alpine/ssl_client@1.36.1-r27?arch=x86_64&upstream=busybox&distro=alpine-3.17.2 https://busybox.net/ @@ -531,17 +531,17 @@ apkdb-cataloger ApkMetadata apk - cpe:2.3:a:ssl-client:ssl_client:1.35.0-r29:*:*:*:*:*:*:* - cpe:2.3:a:ssl_client:ssl-client:1.35.0-r29:*:*:*:*:*:*:* - cpe:2.3:a:ssl_client:ssl_client:1.35.0-r29:*:*:*:*:*:*:* - cpe:2.3:a:ssl:ssl-client:1.35.0-r29:*:*:*:*:*:*:* - cpe:2.3:a:ssl:ssl_client:1.35.0-r29:*:*:*:*:*:*:* + cpe:2.3:a:ssl-client:ssl_client:1.36.1-r27:*:*:*:*:*:*:* + cpe:2.3:a:ssl_client:ssl-client:1.36.1-r27:*:*:*:*:*:*:* + cpe:2.3:a:ssl_client:ssl_client:1.36.1-r27:*:*:*:*:*:*:* + cpe:2.3:a:ssl:ssl-client:1.36.1-r27:*:*:*:*:*:*:* + cpe:2.3:a:ssl:ssl_client:1.36.1-r27:*:*:*:*:*:*:* sha256:7cd52847ad775a5ddc4b58326cf884beee34544296402c6292ed76474c686d39 /lib/apk/db/installed 1dbf7a793afae640ea643a055b6dd4f430ac116b 28672 busybox - cmd:ssl_client=1.35.0-r29 + cmd:ssl_client=1.36.1-r27 Q1QuqZjeP6XG85I29tOiCWofL8Cj0= so:libc.musl-x86_64.so.1 so:libcrypto.so.3 @@ -601,4 +601,4 @@ - \ No newline at end of file + From e2816e38889606674469702b9d42bc71f4e65bec Mon Sep 17 00:00:00 2001 From: Xueqin Cui <72771658+cuixq@users.noreply.github.com> Date: Thu, 23 May 2024 13:55:46 +1000 Subject: [PATCH 40/68] make Maven parent path relative on current project (#987) Previously, the path is always relative to the provided path to `pom.xml`, however, this path should be relative to the current parent path. Also we observe that sometimes `pom.xml` is omitted in `` so when this happens, we manually append `pom.xml` to file path. --- .../fixtures/parent/grandparent/pom.xml | 23 +++++++++++++++++++ .../manifest/fixtures/parent/pom.xml | 7 +++--- internal/resolution/manifest/maven.go | 8 ++++++- 3 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 internal/resolution/manifest/fixtures/parent/grandparent/pom.xml diff --git a/internal/resolution/manifest/fixtures/parent/grandparent/pom.xml b/internal/resolution/manifest/fixtures/parent/grandparent/pom.xml new file mode 100644 index 00000000000..f992aca3aa4 --- /dev/null +++ b/internal/resolution/manifest/fixtures/parent/grandparent/pom.xml @@ -0,0 +1,23 @@ + + + + 4.0.0 + + org.grandparent + grandparent-pom + 1.1.1 + + my-app + + http://www.example.com + + pom + + + org.upstream + parent-pom + 1.2.3 + + + diff --git a/internal/resolution/manifest/fixtures/parent/pom.xml b/internal/resolution/manifest/fixtures/parent/pom.xml index 0a10ee8ee76..272ded1ffef 100644 --- a/internal/resolution/manifest/fixtures/parent/pom.xml +++ b/internal/resolution/manifest/fixtures/parent/pom.xml @@ -15,9 +15,10 @@ pom - org.upstream - parent-pom - 1.2.3 + org.grandparent + grandparentparent-pom + 1.1.1 + ./grandparent diff --git a/internal/resolution/manifest/maven.go b/internal/resolution/manifest/maven.go index 49d7ea96c82..e08029f98e6 100644 --- a/internal/resolution/manifest/maven.go +++ b/internal/resolution/manifest/maven.go @@ -187,6 +187,7 @@ func (m MavenManifestIO) Read(df lockfile.DepFile) (Manifest, error) { const MaxParent = 100 func (m MavenManifestIO) MergeParents(ctx context.Context, result *maven.Project, current maven.Parent, start int, path string, addRequirements func(maven.Project, string), prefix string) error { + currentPath := path visited := make(map[maven.ProjectKey]bool, MaxParent) for n := start; n < MaxParent; n++ { if current.GroupID == "" || current.ArtifactID == "" || current.Version == "" { @@ -200,7 +201,12 @@ func (m MavenManifestIO) MergeParents(ctx context.Context, result *maven.Project var proj maven.Project if current.RelativePath != "" { - f, err := os.Open(filepath.Join(filepath.Dir(path), string(current.RelativePath))) + currentPath = filepath.Join(filepath.Dir(currentPath), string(current.RelativePath)) + if filepath.Base(currentPath) != "pom.xml" { + // If the base is not pom.xml, this path is a directory but not a file. + currentPath = filepath.Join(currentPath, "pom.xml") + } + f, err := os.Open(currentPath) if err != nil { return fmt.Errorf("failed to open parent file %s: %w", current.RelativePath, err) } From e26774dbac9a2717c847d25f3f9b62d0575bc506 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 May 2024 13:56:01 +1000 Subject: [PATCH 41/68] chore(deps-dev): Bump the bundler group across 1 directory with 2 updates (#983) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps the bundler group with 2 updates in the /docs directory: [nokogiri](https://github.com/sparklemotion/nokogiri) and [rexml](https://github.com/ruby/rexml). Updates `nokogiri` from 1.16.4 to 1.16.5
Release notes

Sourced from nokogiri's releases.

v1.16.5 / 2024-05-13

Security

  • [CRuby] Vendored libxml2 is updated to address CVE-2024-34459. See GHSA-r95h-9x8f-r3f7 for more information.

Dependencies


sha256 checksums:

af0f44fa3e664dfb2aa10de8b551447d720c1e8d1f0aa3f35783dcc43e40a874
nokogiri-1.16.5-aarch64-linux.gem
23dc2357b26409a5c33b7e32a82902f0e9995305420f16d1a03ab3ea1a482fec
nokogiri-1.16.5-arm-linux.gem
950d037530edb49f75ad35de0b8038b970a7dda57e2b6326895b0e49fadf6214
nokogiri-1.16.5-arm64-darwin.gem
b7aefc94370c62476b8528e8d8abb6160203abd84a1f4eceda8f1aa8974d9989
nokogiri-1.16.5-java.gem
ec2167160df8fec3137bf95d574ed80ebc1d002bb3b281546b60b4aa9002466e
nokogiri-1.16.5-x64-mingw-ucrt.gem
6984200491fac69974005ecfa2de129d61843d345eafa5d6f58e8b908d1cf107
nokogiri-1.16.5-x64-mingw32.gem
abdc389ab1ec6604492da16bd9d06ad746fdb6bd6a1bd274c400d61ffcadb3c4
nokogiri-1.16.5-x86-linux.gem
63d24981345856f2baf7f4089870a62d3042fb8d3021b280fb04fc052532e3c4
nokogiri-1.16.5-x86-mingw32.gem
71b5f54e378c433d13df67c3b71acc4716129da62402d8181f310c4216a63279
nokogiri-1.16.5-x86_64-darwin.gem
0ca238da870066bed2f7837af6f35791bb9b76c4c5638999c46aac44818a6a97
nokogiri-1.16.5-x86_64-linux.gem
ec36162c68984fa0a90a5c4ae7ab7759460639e716cc1ce75f34c3cb54158ad2
nokogiri-1.16.5.gem
Changelog

Sourced from nokogiri's changelog.

v1.16.5

Security

  • [CRuby] Vendored libxml2 is updated to address CVE-2024-34459. See GHSA-r95h-9x8f-r3f7 for more information.

Dependencies

Commits

Updates `rexml` from 3.2.6 to 3.2.8
Release notes

Sourced from rexml's releases.

REXML 3.2.8 - 2024-05-16

Fixes

  • Suppressed a warning

REXML 3.2.7 - 2024-05-16

Improvements

Fixes

  • XPath: Fixed a bug of normalize_space(array).

  • XPath: Fixed a bug that wrong position is used with nested path.

    • GH-110

    • GH-122

    • Reported by jcavalieri.

    • Patch by NAITOH Jun.

  • Fixed a bug that an exception message can't be generated for invalid encoding XML.

... (truncated)

Changelog

Sourced from rexml's changelog.

3.2.8 - 2024-05-16 {#version-3-2-8}

Fixes

  • Suppressed a warning

3.2.7 - 2024-05-16 {#version-3-2-7}

Improvements

Fixes

  • XPath: Fixed a bug of normalize_space(array).

  • XPath: Fixed a bug that wrong position is used with nested path.

    • GH-110

    • GH-122

    • Reported by jcavalieri.

    • Patch by NAITOH Jun.

  • Fixed a bug that an exception message can't be generated for

... (truncated)

Commits

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/google/osv-scanner/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Xueqin Cui <72771658+cuixq@users.noreply.github.com> --- docs/Gemfile.lock | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock index 7911e6e86fc..29cbe13e50f 100644 --- a/docs/Gemfile.lock +++ b/docs/Gemfile.lock @@ -222,7 +222,7 @@ GEM mutex_m (0.2.0) net-http (0.4.1) uri - nokogiri (1.16.4-x86_64-linux) + nokogiri (1.16.5-x86_64-linux) racc (~> 1.4) octokit (4.25.1) faraday (>= 1, < 3) @@ -234,7 +234,8 @@ GEM rb-fsevent (0.11.2) rb-inotify (0.10.1) ffi (~> 1.0) - rexml (3.2.6) + rexml (3.2.8) + strscan (>= 3.0.9) rouge (3.30.0) rubyzip (2.3.2) safe_yaml (1.0.5) @@ -248,6 +249,7 @@ GEM faraday (>= 0.17.3, < 3) simpleidn (0.2.2) unf (~> 0.1.4) + strscan (3.1.0) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) typhoeus (1.4.1) From 1fa7d7a7caae96407abe848ef324cdcba72689f2 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 23 May 2024 06:05:39 +0200 Subject: [PATCH 42/68] chore(deps): update golang:1.21-alpine3.19 docker digest to 1c2e474 (#985) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | golang | stage | digest | `b3aea8d` -> `1c2e474` | --- ### Configuration 📅 **Schedule**: Branch creation - "before 6am on monday" in timezone Australia/Sydney, Automerge - At any time (no schedule defined). đŸšĻ **Automerge**: Disabled by config. Please merge this manually once you are satisfied. â™ģ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/google/osv-scanner). Co-authored-by: Xueqin Cui <72771658+cuixq@users.noreply.github.com> --- Dockerfile | 2 +- action.dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index ac903e63e47..a4f20767f9e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM golang:1.21-alpine3.19@sha256:b3aea8df13191dab7d2e44a7fbc51d7b09bb796547127da8d74cfb81e5d65923 AS builder +FROM golang:1.21-alpine3.19@sha256:1c2e4747a1b15fe65c8317bca9bd91611b29fe7c8b65009b9edbee7653e62614 AS builder WORKDIR /src COPY ./go.mod ./go.sum ./ diff --git a/action.dockerfile b/action.dockerfile index 2f782843601..769423e76fd 100644 --- a/action.dockerfile +++ b/action.dockerfile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM golang:1.21-alpine3.19@sha256:b3aea8df13191dab7d2e44a7fbc51d7b09bb796547127da8d74cfb81e5d65923 +FROM golang:1.21-alpine3.19@sha256:1c2e4747a1b15fe65c8317bca9bd91611b29fe7c8b65009b9edbee7653e62614 RUN mkdir /src WORKDIR /src From ffdda1ed1a7f0cf99142f2bf995ecc8d2fca6bb9 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 23 May 2024 11:59:38 +0200 Subject: [PATCH 43/68] chore(deps): update workflows (#977) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/checkout](https://togithub.com/actions/checkout) | action | patch | `v4.1.4` -> `v4.1.6` | | [codecov/codecov-action](https://togithub.com/codecov/codecov-action) | action | minor | `v4.3.1` -> `v4.4.1` | | gaurav-nelson/github-action-markdown-link-check | action | digest | `25b2c43` -> `7d83e59` | | [github/codeql-action](https://togithub.com/github/codeql-action) | action | patch | `v3.25.3` -> `v3.25.6` | | [goreleaser/goreleaser-action](https://togithub.com/goreleaser/goreleaser-action) | action | minor | `v5.0.0` -> `v5.1.0` | | [ossf/scorecard-action](https://togithub.com/ossf/scorecard-action) | action | patch | `v2.3.1` -> `v2.3.3` | --- ### Release Notes
actions/checkout (actions/checkout) ### [`v4.1.6`](https://togithub.com/actions/checkout/blob/HEAD/CHANGELOG.md#v416) [Compare Source](https://togithub.com/actions/checkout/compare/v4.1.5...v4.1.6) - Check platform to set archive extension appropriately by [@​cory-miller](https://togithub.com/cory-miller) in [https://github.com/actions/checkout/pull/1732](https://togithub.com/actions/checkout/pull/1732) ### [`v4.1.5`](https://togithub.com/actions/checkout/releases/tag/v4.1.5) [Compare Source](https://togithub.com/actions/checkout/compare/v4.1.4...v4.1.5) #### What's Changed - Update NPM dependencies by [@​cory-miller](https://togithub.com/cory-miller) in [https://github.com/actions/checkout/pull/1703](https://togithub.com/actions/checkout/pull/1703) - Bump github/codeql-action from 2 to 3 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/actions/checkout/pull/1694](https://togithub.com/actions/checkout/pull/1694) - Bump actions/setup-node from 1 to 4 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/actions/checkout/pull/1696](https://togithub.com/actions/checkout/pull/1696) - Bump actions/upload-artifact from 2 to 4 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/actions/checkout/pull/1695](https://togithub.com/actions/checkout/pull/1695) - README: Suggest `user.email` to be `41898282+github-actions[bot]@​users.noreply.github.com` by [@​cory-miller](https://togithub.com/cory-miller) in [https://github.com/actions/checkout/pull/1707](https://togithub.com/actions/checkout/pull/1707) **Full Changelog**: https://github.com/actions/checkout/compare/v4.1.4...v4.1.5
codecov/codecov-action (codecov/codecov-action) ### [`v4.4.1`](https://togithub.com/codecov/codecov-action/compare/v4.4.0...v4.4.1) [Compare Source](https://togithub.com/codecov/codecov-action/compare/v4.4.0...v4.4.1) ### [`v4.4.0`](https://togithub.com/codecov/codecov-action/releases/tag/v4.4.0) [Compare Source](https://togithub.com/codecov/codecov-action/compare/v4.3.1...v4.4.0) #### What's Changed - chore: Clarify isPullRequestFromFork by [@​jsoref](https://togithub.com/jsoref) in [https://github.com/codecov/codecov-action/pull/1411](https://togithub.com/codecov/codecov-action/pull/1411) - build(deps): bump actions/checkout from 4.1.4 to 4.1.5 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/codecov/codecov-action/pull/1423](https://togithub.com/codecov/codecov-action/pull/1423) - build(deps): bump github/codeql-action from 3.25.3 to 3.25.4 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/codecov/codecov-action/pull/1421](https://togithub.com/codecov/codecov-action/pull/1421) - build(deps): bump ossf/scorecard-action from 2.3.1 to 2.3.3 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/codecov/codecov-action/pull/1420](https://togithub.com/codecov/codecov-action/pull/1420) - feat: remove GPG and run on spawn by [@​thomasrockhu-codecov](https://togithub.com/thomasrockhu-codecov) in [https://github.com/codecov/codecov-action/pull/1426](https://togithub.com/codecov/codecov-action/pull/1426) - build(deps-dev): bump [@​typescript-eslint/parser](https://togithub.com/typescript-eslint/parser) from 7.8.0 to 7.9.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/codecov/codecov-action/pull/1428](https://togithub.com/codecov/codecov-action/pull/1428) - chore(release): 4.4.0 by [@​thomasrockhu-codecov](https://togithub.com/thomasrockhu-codecov) in [https://github.com/codecov/codecov-action/pull/1430](https://togithub.com/codecov/codecov-action/pull/1430) **Full Changelog**: https://github.com/codecov/codecov-action/compare/v4.3.1...v4.4.0
github/codeql-action (github/codeql-action) ### [`v3.25.6`](https://togithub.com/github/codeql-action/compare/v3.25.5...v3.25.6) [Compare Source](https://togithub.com/github/codeql-action/compare/v3.25.5...v3.25.6) ### [`v3.25.5`](https://togithub.com/github/codeql-action/compare/v3.25.4...v3.25.5) [Compare Source](https://togithub.com/github/codeql-action/compare/v3.25.4...v3.25.5) ### [`v3.25.4`](https://togithub.com/github/codeql-action/compare/v3.25.3...v3.25.4) [Compare Source](https://togithub.com/github/codeql-action/compare/v3.25.3...v3.25.4)
goreleaser/goreleaser-action (goreleaser/goreleaser-action) ### [`v5.1.0`](https://togithub.com/goreleaser/goreleaser-action/releases/tag/v5.1.0) [Compare Source](https://togithub.com/goreleaser/goreleaser-action/compare/v5.0.0...v5.1.0) #### Important This version changes the default behavior of `latest` to `~> v1`. The next major of this action (v6), will change this to `~> v2`, and will be launched together with GoReleaser v2. #### What's Changed - docs: bump actions to latest major by [@​crazy-max](https://togithub.com/crazy-max) in [https://github.com/goreleaser/goreleaser-action/pull/435](https://togithub.com/goreleaser/goreleaser-action/pull/435) - chore(deps): bump docker/bake-action from 3 to 4 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/goreleaser/goreleaser-action/pull/436](https://togithub.com/goreleaser/goreleaser-action/pull/436) - chore(deps): bump codecov/codecov-action from 3 to 4 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/goreleaser/goreleaser-action/pull/437](https://togithub.com/goreleaser/goreleaser-action/pull/437) - chore(deps): bump actions/setup-go from 4 to 5 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/goreleaser/goreleaser-action/pull/443](https://togithub.com/goreleaser/goreleaser-action/pull/443) - chore(deps): bump actions/upload-artifact from 3 to 4 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/goreleaser/goreleaser-action/pull/444](https://togithub.com/goreleaser/goreleaser-action/pull/444) - Delete .kodiak.toml by [@​vedantmgoyal9](https://togithub.com/vedantmgoyal9) in [https://github.com/goreleaser/goreleaser-action/pull/446](https://togithub.com/goreleaser/goreleaser-action/pull/446) - chore(deps): bump codecov/codecov-action from 3 to 4 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/goreleaser/goreleaser-action/pull/448](https://togithub.com/goreleaser/goreleaser-action/pull/448) - chore(deps): bump ip from 2.0.0 to 2.0.1 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/goreleaser/goreleaser-action/pull/450](https://togithub.com/goreleaser/goreleaser-action/pull/450) - Upgrade setup-go action version in README by [@​kishaningithub](https://togithub.com/kishaningithub) in [https://github.com/goreleaser/goreleaser-action/pull/455](https://togithub.com/goreleaser/goreleaser-action/pull/455) - chore(deps): bump tar from 6.1.14 to 6.2.1 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/goreleaser/goreleaser-action/pull/456](https://togithub.com/goreleaser/goreleaser-action/pull/456) - chore: use corepack to install yarn by [@​crazy-max](https://togithub.com/crazy-max) in [https://github.com/goreleaser/goreleaser-action/pull/458](https://togithub.com/goreleaser/goreleaser-action/pull/458) - feat: lock this major version of the action to use '~> v1' as 'latest' by [@​caarlos0](https://togithub.com/caarlos0) in [https://github.com/goreleaser/goreleaser-action/pull/461](https://togithub.com/goreleaser/goreleaser-action/pull/461) - chore(deps): bump semver from 7.6.0 to 7.6.2 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/goreleaser/goreleaser-action/pull/462](https://togithub.com/goreleaser/goreleaser-action/pull/462) - chore(deps): bump [@​actions/http-client](https://togithub.com/actions/http-client) from 2.2.0 to 2.2.1 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/goreleaser/goreleaser-action/pull/451](https://togithub.com/goreleaser/goreleaser-action/pull/451) #### New Contributors - [@​vedantmgoyal9](https://togithub.com/vedantmgoyal9) made their first contribution in [https://github.com/goreleaser/goreleaser-action/pull/446](https://togithub.com/goreleaser/goreleaser-action/pull/446) **Full Changelog**: https://github.com/goreleaser/goreleaser-action/compare/v5.0.0...v5.1.0
ossf/scorecard-action (ossf/scorecard-action) ### [`v2.3.3`](https://togithub.com/ossf/scorecard-action/releases/tag/v2.3.3) [Compare Source](https://togithub.com/ossf/scorecard-action/compare/v2.3.2...v2.3.3) > \[!NOTE]\ > There is no v2.3.2 release as a step was skipped in the release process. This was fixed and re-released under the v2.3.3 tag #### What's Changed - :seedling: Bump github.com/ossf/scorecard/v4 (v4.13.1) to github.com/ossf/scorecard/v5 (v5.0.0-rc1) by [@​spencerschrock](https://togithub.com/spencerschrock) in [https://github.com/ossf/scorecard-action/pull/1366](https://togithub.com/ossf/scorecard-action/pull/1366) - :seedling: Bump github.com/ossf/scorecard/v5 from v5.0.0-rc1 to v5.0.0-rc2 by [@​spencerschrock](https://togithub.com/spencerschrock) in [https://github.com/ossf/scorecard-action/pull/1374](https://togithub.com/ossf/scorecard-action/pull/1374) - :seedling: Bump github.com/ossf/scorecard/v5 from v5.0.0-rc2 to v5.0.0-rc2.0.20240509182734-7ce860946928 by [@​spencerschrock](https://togithub.com/spencerschrock) in [https://github.com/ossf/scorecard-action/pull/1377](https://togithub.com/ossf/scorecard-action/pull/1377) For a full changelist of what these include, see the [v5.0.0-rc1](https://togithub.com/ossf/scorecard/releases/tag/v5.0.0-rc1) and [v5.0.0-rc2](https://togithub.com/ossf/scorecard/releases/tag/v5.0.0-rc2) release notes. ##### Documentation - :book: Move token discussion out of main README. by [@​spencerschrock](https://togithub.com/spencerschrock) in [https://github.com/ossf/scorecard-action/pull/1279](https://togithub.com/ossf/scorecard-action/pull/1279) - :book: link to `ossf/scorecard` workflow instead of maintaining an example by [@​spencerschrock](https://togithub.com/spencerschrock) in [https://github.com/ossf/scorecard-action/pull/1352](https://togithub.com/ossf/scorecard-action/pull/1352) - :book: update api links to new scorecard.dev site by [@​spencerschrock](https://togithub.com/spencerschrock) in [https://github.com/ossf/scorecard-action/pull/1376](https://togithub.com/ossf/scorecard-action/pull/1376) **Full Changelog**: https://github.com/ossf/scorecard-action/compare/v2.3.1...v2.3.3 ### [`v2.3.2`](https://togithub.com/ossf/scorecard-action/compare/v2.3.1...v2.3.2) [Compare Source](https://togithub.com/ossf/scorecard-action/compare/v2.3.1...v2.3.2)
--- ### Configuration 📅 **Schedule**: Branch creation - "before 6am on monday" in timezone Australia/Sydney, Automerge - At any time (no schedule defined). đŸšĻ **Automerge**: Disabled by config. Please merge this manually once you are satisfied. â™ģ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. đŸ‘ģ **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/google/osv-scanner). Co-authored-by: Xueqin Cui <72771658+cuixq@users.noreply.github.com> --- .github/workflows/checks.yml | 10 +++++----- .github/workflows/codeql-analysis.yml | 8 ++++---- .github/workflows/goreleaser.yml | 4 ++-- .github/workflows/link-check-on-push.yml | 4 ++-- .github/workflows/link-check.yml | 4 ++-- .github/workflows/osv-scanner-reusable-pr.yml | 4 ++-- .github/workflows/osv-scanner-reusable.yml | 4 ++-- .github/workflows/prerelease-check.yml | 8 ++++---- .github/workflows/scorecards.yml | 6 +++--- .github/workflows/test-action/action.yml | 2 +- 10 files changed, 27 insertions(+), 27 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index db39d09a418..1ed004b9aaf 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -39,7 +39,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: persist-credentials: false - run: scripts/report_uncleaned_snapshots.py @@ -50,7 +50,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: persist-credentials: false - name: Run lint action @@ -62,7 +62,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: persist-credentials: false - name: Set up Go @@ -78,7 +78,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: persist-credentials: false - run: scripts/build_test_images.sh @@ -100,7 +100,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Check out code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: persist-credentials: false - uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 5a7261905d0..a391f3f3954 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -42,7 +42,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 # Update go to the latest version to support minor go versions is go.mod file - name: Install Go uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 @@ -50,7 +50,7 @@ jobs: go-version-file: go.mod # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 + uses: github/codeql-action/init@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -61,7 +61,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 + uses: github/codeql-action/autobuild@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 # ℹī¸ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -75,4 +75,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 + uses: github/codeql-action/analyze@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 diff --git a/.github/workflows/goreleaser.yml b/.github/workflows/goreleaser.yml index a9ab90d282d..abfccf9cbab 100644 --- a/.github/workflows/goreleaser.yml +++ b/.github/workflows/goreleaser.yml @@ -22,7 +22,7 @@ jobs: DOCKER_CLI_EXPERIMENTAL: "enabled" steps: - name: Checkout - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: fetch-depth: 0 ref: ${{ inputs.commit }} @@ -41,7 +41,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Run GoReleaser id: run-goreleaser - uses: goreleaser/goreleaser-action@7ec5c2b0c6cdda6e8bbb49444bc797dd33d74dd8 # v5.0.0 + uses: goreleaser/goreleaser-action@5742e2a039330cbb23ebf35f046f814d4c6ff811 # v5.1.0 with: version: latest args: release --rm-dist diff --git a/.github/workflows/link-check-on-push.yml b/.github/workflows/link-check-on-push.yml index c5d38d13c1a..a32ee05a2c4 100644 --- a/.github/workflows/link-check-on-push.yml +++ b/.github/workflows/link-check-on-push.yml @@ -12,8 +12,8 @@ jobs: contents: read # to fetch code (actions/checkout) runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: gaurav-nelson/github-action-markdown-link-check@25b2c436c653f0d4500d3c2df86e5c14e71e44e1 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: gaurav-nelson/github-action-markdown-link-check@7d83e59a57f3c201c76eed3d33dff64ec4452d27 with: use-quiet-mode: "yes" base-branch: "main" diff --git a/.github/workflows/link-check.yml b/.github/workflows/link-check.yml index 565948cbfdf..1a0a63aa725 100644 --- a/.github/workflows/link-check.yml +++ b/.github/workflows/link-check.yml @@ -14,8 +14,8 @@ jobs: contents: read # to fetch code (actions/checkout) runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: gaurav-nelson/github-action-markdown-link-check@25b2c436c653f0d4500d3c2df86e5c14e71e44e1 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: gaurav-nelson/github-action-markdown-link-check@7d83e59a57f3c201c76eed3d33dff64ec4452d27 with: use-quiet-mode: "yes" # Documentation available here: https://github.com/marketplace/actions/markdown-link-check diff --git a/.github/workflows/osv-scanner-reusable-pr.yml b/.github/workflows/osv-scanner-reusable-pr.yml index 39740a85623..35e08ed5d2f 100644 --- a/.github/workflows/osv-scanner-reusable-pr.yml +++ b/.github/workflows/osv-scanner-reusable-pr.yml @@ -49,7 +49,7 @@ jobs: security-events: write # for uploading SARIF files runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: fetch-depth: 0 # Do persist credentials, as we need it for the git checkout later @@ -108,6 +108,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" if: ${{ !cancelled() && inputs.upload-sarif == true }} - uses: github/codeql-action/upload-sarif@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 + uses: github/codeql-action/upload-sarif@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 with: sarif_file: ${{ inputs.results-file-name }} diff --git a/.github/workflows/osv-scanner-reusable.yml b/.github/workflows/osv-scanner-reusable.yml index 53aa188ddd0..987f52ea946 100644 --- a/.github/workflows/osv-scanner-reusable.yml +++ b/.github/workflows/osv-scanner-reusable.yml @@ -54,7 +54,7 @@ jobs: security-events: write # for uploading SARIF files runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: persist-credentials: false - name: "Download custom artifact if specified" @@ -91,6 +91,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" if: "${{ !cancelled() && inputs.upload-sarif == true }}" - uses: github/codeql-action/upload-sarif@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 + uses: github/codeql-action/upload-sarif@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 with: sarif_file: ${{ inputs.results-file-name }} diff --git a/.github/workflows/prerelease-check.yml b/.github/workflows/prerelease-check.yml index d2a080332ed..4a3fc402d02 100644 --- a/.github/workflows/prerelease-check.yml +++ b/.github/workflows/prerelease-check.yml @@ -36,7 +36,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: persist-credentials: false - name: Run lint action @@ -48,7 +48,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: persist-credentials: false ref: ${{ inputs.commit }} @@ -65,7 +65,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: persist-credentials: false - run: scripts/build_test_images.sh @@ -87,7 +87,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Check out code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: persist-credentials: false ref: ${{ inputs.commit }} diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 852edd4e233..34e1e39195b 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -33,12 +33,12 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1 + uses: ossf/scorecard-action@dc50aa9510b46c811795eb24b2f1ba02a914e534 # v2.3.3 with: results_file: results.sarif results_format: sarif @@ -68,6 +68,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 + uses: github/codeql-action/upload-sarif@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 with: sarif_file: results.sarif diff --git a/.github/workflows/test-action/action.yml b/.github/workflows/test-action/action.yml index 7158ab4621b..f1e2f04da82 100644 --- a/.github/workflows/test-action/action.yml +++ b/.github/workflows/test-action/action.yml @@ -29,7 +29,7 @@ runs: TEST_ACCEPTANCE: true run: ./scripts/run_tests.sh - name: Upload coverage to Codecov - uses: codecov/codecov-action@5ecb98a3c6b747ed38dc09f787459979aebb39be # v4.3.1 + uses: codecov/codecov-action@125fc84a9a348dbcf27191600683ec096ec9021c # v4.4.1 with: token: ${{ inputs.codecov_token }} fail_ci_if_error: true From e6b3fd420359350f375c682621ff094bb1c74c3f Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Thu, 23 May 2024 22:00:18 +1200 Subject: [PATCH 44/68] feat: support parsing `gradle/verification-metadata.xml` (#943) This adds support for parsing `gradle/verification-metadata.xml` files - since this seems to be like an actual lockfile it's very straightforward: we just parse the file as XML and extract out the name + version of "component". The interesting part of this is that unlike other project-relative lockfiles this file currently must exist in the `gradle` directory which raises questions about how `--recursive` comes into play previously we'd not enabled APK and DPKG checking by default but I feel that was more because they were absolute paths and so didn't make sense to do when people were scanning in "project mode". For now I've just taken the simple route of making the file `gradle/verification-metadata.xml` since that does just work (except for the "find parser" flow which checks against `path.Base` so that has the `gradle` omitted). Resolves #915 --- docs/supported_languages_and_lockfiles.md | 26 +- pkg/lockfile/ecosystems_test.go | 4 +- pkg/lockfile/extract_test.go | 38 +- .../gradle-verification-metadata/complex.xml | 418 +++++++++++ .../gradle-verification-metadata/empty.xml | 9 + .../multiple-versions.xml | 129 ++++ .../gradle-verification-metadata/not-xml.txt | 1 + .../one-package.xml | 19 + .../two-packages.xml | 24 + .../parse-gradle-verification-metadata.go | 55 ++ ...parse-gradle-verification-metadata_test.go | 689 ++++++++++++++++++ pkg/lockfile/parse.go | 1 + pkg/lockfile/parse_test.go | 1 + 13 files changed, 1381 insertions(+), 33 deletions(-) create mode 100644 pkg/lockfile/fixtures/gradle-verification-metadata/complex.xml create mode 100644 pkg/lockfile/fixtures/gradle-verification-metadata/empty.xml create mode 100644 pkg/lockfile/fixtures/gradle-verification-metadata/multiple-versions.xml create mode 100644 pkg/lockfile/fixtures/gradle-verification-metadata/not-xml.txt create mode 100644 pkg/lockfile/fixtures/gradle-verification-metadata/one-package.xml create mode 100644 pkg/lockfile/fixtures/gradle-verification-metadata/two-packages.xml create mode 100644 pkg/lockfile/parse-gradle-verification-metadata.go create mode 100644 pkg/lockfile/parse-gradle-verification-metadata_test.go diff --git a/docs/supported_languages_and_lockfiles.md b/docs/supported_languages_and_lockfiles.md index c11a33a9611..4e4a16fb028 100644 --- a/docs/supported_languages_and_lockfiles.md +++ b/docs/supported_languages_and_lockfiles.md @@ -22,19 +22,19 @@ nav_order: 2 A wide range of lockfiles are supported by utilizing this [lockfile package](https://github.com/google/osv-scanner/tree/main/pkg/lockfile). -| Language | Compatible Lockfile(s) | -| :--------- | :----------------------------------------------------------------------------------------------------------------------- | -| C/C++ | `conan.lock`
[C/C++ commit scanning](#cc-scanning) | -| Dart | `pubspec.lock` | -| Elixir | `mix.lock` | -| Go | `go.mod` | -| Java | `buildscript-gradle.lockfile`
`gradle.lockfile`
`pom.xml`[\*](https://github.com/google/osv-scanner/issues/35) | -| Javascript | `package-lock.json`
`pnpm-lock.yaml`
`yarn.lock` | -| PHP | `composer.lock` | -| Python | `Pipfile.lock`
`poetry.lock`
`requirements.txt`[\*](https://github.com/google/osv-scanner/issues/34)
`pdm.lock` | -| R | `renv.lock` | -| Ruby | `Gemfile.lock` | -| Rust | `Cargo.lock` | +| Language | Compatible Lockfile(s) | +| :--------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- | +| C/C++ | `conan.lock`
[C/C++ commit scanning](#cc-scanning) | +| Dart | `pubspec.lock` | +| Elixir | `mix.lock` | +| Go | `go.mod` | +| Java | `buildscript-gradle.lockfile`
`gradle.lockfile`
`gradle/verification-metadata.xml`
`pom.xml`[\*](https://github.com/google/osv-scanner/issues/35) | +| Javascript | `package-lock.json`
`pnpm-lock.yaml`
`yarn.lock` | +| PHP | `composer.lock` | +| Python | `Pipfile.lock`
`poetry.lock`
`requirements.txt`[\*](https://github.com/google/osv-scanner/issues/34)
`pdm.lock` | +| R | `renv.lock` | +| Ruby | `Gemfile.lock` | +| Rust | `Cargo.lock` | ## Alpine Package Keeper and Debian Package Keeper diff --git a/pkg/lockfile/ecosystems_test.go b/pkg/lockfile/ecosystems_test.go index 855425ee63c..7c0c99ec2cf 100644 --- a/pkg/lockfile/ecosystems_test.go +++ b/pkg/lockfile/ecosystems_test.go @@ -36,9 +36,9 @@ func TestKnownEcosystems(t *testing.T) { // - npm, yarn, and pnpm, // - pip, poetry, pdm and pipenv, - // - maven and gradle, + // - maven, gradle, and gradle/verification-metadata // all use the same ecosystem so "ignore" those parsers in the count - expectedCount -= 6 + expectedCount -= 7 ecosystems := lockfile.KnownEcosystems() diff --git a/pkg/lockfile/extract_test.go b/pkg/lockfile/extract_test.go index e095df36e3c..9300c244fe3 100644 --- a/pkg/lockfile/extract_test.go +++ b/pkg/lockfile/extract_test.go @@ -33,24 +33,25 @@ func TestFindExtractor(t *testing.T) { t.Parallel() lockfiles := map[string]string{ - "buildscript-gradle.lockfile": "gradle.lockfile", - "Cargo.lock": "Cargo.lock", - "composer.lock": "composer.lock", - "Gemfile.lock": "Gemfile.lock", - "go.mod": "go.mod", - "gradle.lockfile": "gradle.lockfile", - "mix.lock": "mix.lock", - "pdm.lock": "pdm.lock", - "Pipfile.lock": "Pipfile.lock", - "package-lock.json": "package-lock.json", - "packages.lock.json": "packages.lock.json", - "pnpm-lock.yaml": "pnpm-lock.yaml", - "poetry.lock": "poetry.lock", - "pom.xml": "pom.xml", - "pubspec.lock": "pubspec.lock", - "renv.lock": "renv.lock", - "requirements.txt": "requirements.txt", - "yarn.lock": "yarn.lock", + "buildscript-gradle.lockfile": "gradle.lockfile", + "Cargo.lock": "Cargo.lock", + "composer.lock": "composer.lock", + "Gemfile.lock": "Gemfile.lock", + "go.mod": "go.mod", + "gradle/verification-metadata.xml": "gradle/verification-metadata.xml", + "gradle.lockfile": "gradle.lockfile", + "mix.lock": "mix.lock", + "pdm.lock": "pdm.lock", + "Pipfile.lock": "Pipfile.lock", + "package-lock.json": "package-lock.json", + "packages.lock.json": "packages.lock.json", + "pnpm-lock.yaml": "pnpm-lock.yaml", + "poetry.lock": "poetry.lock", + "pom.xml": "pom.xml", + "pubspec.lock": "pubspec.lock", + "renv.lock": "renv.lock", + "requirements.txt": "requirements.txt", + "yarn.lock": "yarn.lock", } for file, extractAs := range lockfiles { @@ -91,6 +92,7 @@ func TestExtractDeps_FindsExpectedExtractor(t *testing.T) { "Gemfile.lock", "go.mod", "gradle.lockfile", + "gradle/verification-metadata.xml", "mix.lock", "pdm.lock", "Pipfile.lock", diff --git a/pkg/lockfile/fixtures/gradle-verification-metadata/complex.xml b/pkg/lockfile/fixtures/gradle-verification-metadata/complex.xml new file mode 100644 index 00000000000..9f3522431fd --- /dev/null +++ b/pkg/lockfile/fixtures/gradle-verification-metadata/complex.xml @@ -0,0 +1,418 @@ + + + + + true + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pkg/lockfile/fixtures/gradle-verification-metadata/empty.xml b/pkg/lockfile/fixtures/gradle-verification-metadata/empty.xml new file mode 100644 index 00000000000..95932b7f7b0 --- /dev/null +++ b/pkg/lockfile/fixtures/gradle-verification-metadata/empty.xml @@ -0,0 +1,9 @@ + + + + true + false + + diff --git a/pkg/lockfile/fixtures/gradle-verification-metadata/multiple-versions.xml b/pkg/lockfile/fixtures/gradle-verification-metadata/multiple-versions.xml new file mode 100644 index 00000000000..b1ddc598097 --- /dev/null +++ b/pkg/lockfile/fixtures/gradle-verification-metadata/multiple-versions.xml @@ -0,0 +1,129 @@ + + + + true + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pkg/lockfile/fixtures/gradle-verification-metadata/not-xml.txt b/pkg/lockfile/fixtures/gradle-verification-metadata/not-xml.txt new file mode 100644 index 00000000000..04976554292 --- /dev/null +++ b/pkg/lockfile/fixtures/gradle-verification-metadata/not-xml.txt @@ -0,0 +1 @@ +this is not a valid xml file! diff --git a/pkg/lockfile/fixtures/gradle-verification-metadata/one-package.xml b/pkg/lockfile/fixtures/gradle-verification-metadata/one-package.xml new file mode 100644 index 00000000000..d23f242cf84 --- /dev/null +++ b/pkg/lockfile/fixtures/gradle-verification-metadata/one-package.xml @@ -0,0 +1,19 @@ + + + + true + false + + + + + + + + + + + + diff --git a/pkg/lockfile/fixtures/gradle-verification-metadata/two-packages.xml b/pkg/lockfile/fixtures/gradle-verification-metadata/two-packages.xml new file mode 100644 index 00000000000..f34cd2dfb3b --- /dev/null +++ b/pkg/lockfile/fixtures/gradle-verification-metadata/two-packages.xml @@ -0,0 +1,24 @@ + + + + true + false + + + + + + + + + + + + + + + + + diff --git a/pkg/lockfile/parse-gradle-verification-metadata.go b/pkg/lockfile/parse-gradle-verification-metadata.go new file mode 100644 index 00000000000..65d5af638c0 --- /dev/null +++ b/pkg/lockfile/parse-gradle-verification-metadata.go @@ -0,0 +1,55 @@ +package lockfile + +import ( + "encoding/xml" + "fmt" + "path/filepath" +) + +type GradleVerificationMetadataFile struct { + Components []struct { + Group string `xml:"group,attr"` + Name string `xml:"name,attr"` + Version string `xml:"version,attr"` + } `xml:"components>component"` +} + +type GradleVerificationMetadataExtractor struct{} + +func (e GradleVerificationMetadataExtractor) ShouldExtract(path string) bool { + return filepath.Base(filepath.Dir(path)) == "gradle" && filepath.Base(path) == "verification-metadata.xml" +} + +func (e GradleVerificationMetadataExtractor) Extract(f DepFile) ([]PackageDetails, error) { + var parsedLockfile *GradleVerificationMetadataFile + + err := xml.NewDecoder(f).Decode(&parsedLockfile) + + if err != nil { + return []PackageDetails{}, fmt.Errorf("could not extract from %s: %w", f.Path(), err) + } + + pkgs := make([]PackageDetails, 0, len(parsedLockfile.Components)) + + for _, component := range parsedLockfile.Components { + pkgs = append(pkgs, PackageDetails{ + Name: component.Group + ":" + component.Name, + Version: component.Version, + Ecosystem: MavenEcosystem, + CompareAs: MavenEcosystem, + }) + } + + return pkgs, nil +} + +var _ Extractor = GradleVerificationMetadataExtractor{} + +//nolint:gochecknoinits +func init() { + registerExtractor("gradle/verification-metadata.xml", GradleVerificationMetadataExtractor{}) +} + +func ParseGradleVerificationMetadata(pathToLockfile string) ([]PackageDetails, error) { + return extractFromFile(pathToLockfile, GradleVerificationMetadataExtractor{}) +} diff --git a/pkg/lockfile/parse-gradle-verification-metadata_test.go b/pkg/lockfile/parse-gradle-verification-metadata_test.go new file mode 100644 index 00000000000..72d849c4898 --- /dev/null +++ b/pkg/lockfile/parse-gradle-verification-metadata_test.go @@ -0,0 +1,689 @@ +package lockfile_test + +import ( + "io/fs" + "testing" + + "github.com/google/osv-scanner/pkg/lockfile" +) + +func TestGradleVerificationMetadataExtractor_ShouldExtract(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + path string + want bool + }{ + { + name: "", + path: "", + want: false, + }, + { + name: "", + path: "verification-metadata.xml", + want: false, + }, + { + name: "", + path: "gradle/verification-metadata.xml", + want: true, + }, + { + name: "", + path: "path/to/my/verification-metadata.xml", + want: false, + }, + { + name: "", + path: "path/to/my/verification-metadata.xml/file", + want: false, + }, + { + name: "", + path: "path/to/my/verification-metadata.xml.file", + want: false, + }, + { + name: "", + path: "path.to.my.verification-metadata.xml", + want: false, + }, + { + name: "", + path: "path/to/my/gradle/verification-metadata.xml", + want: true, + }, + { + name: "", + path: "path/to/my/gradle/verification-metadata.xml/file", + want: false, + }, + { + name: "", + path: "path/to/my/gradle/verification-metadata.xml.file", + want: false, + }, + { + name: "", + path: "path.to.my.gradle.verification-metadata.xml", + want: false, + }, + } + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + e := lockfile.GradleVerificationMetadataExtractor{} + got := e.ShouldExtract(tt.path) + if got != tt.want { + t.Errorf("Extract() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestParseGradleVerificationMetadata_FileDoesNotExist(t *testing.T) { + t.Parallel() + + packages, err := lockfile.ParseGradleVerificationMetadata("fixtures/gradle-verification-metadata/does-not-exist") + + expectErrIs(t, err, fs.ErrNotExist) + expectPackages(t, packages, []lockfile.PackageDetails{}) +} + +func TestParseGradleVerificationMetadata_InvalidXml(t *testing.T) { + t.Parallel() + + packages, err := lockfile.ParseGradleVerificationMetadata("fixtures/gradle-verification-metadata/not-xml.txt") + + expectErrContaining(t, err, "could not extract from") + expectPackages(t, packages, []lockfile.PackageDetails{}) +} + +func TestParseGradleVerificationMetadata_NoPackages(t *testing.T) { + t.Parallel() + + packages, err := lockfile.ParseGradleVerificationMetadata("fixtures/gradle-verification-metadata/empty.xml") + + if err != nil { + t.Errorf("Got unexpected error: %v", err) + } + + expectPackages(t, packages, []lockfile.PackageDetails{}) +} + +func TestParseGradleVerificationMetadata_OnePackage(t *testing.T) { + t.Parallel() + + packages, err := lockfile.ParseGradleVerificationMetadata("fixtures/gradle-verification-metadata/one-package.xml") + + if err != nil { + t.Errorf("Got unexpected error: %v", err) + } + + expectPackages(t, packages, []lockfile.PackageDetails{ + { + Name: "org.apache.pdfbox:pdfbox", + Version: "2.0.17", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + }) +} + +func TestParseGradleVerificationMetadata_TwoPackages(t *testing.T) { + t.Parallel() + + packages, err := lockfile.ParseGradleVerificationMetadata("fixtures/gradle-verification-metadata/two-packages.xml") + + if err != nil { + t.Errorf("Got unexpected error: %v", err) + } + + expectPackages(t, packages, []lockfile.PackageDetails{ + { + Name: "org.apache.pdfbox:pdfbox", + Version: "2.0.17", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.github.javaparser:javaparser-core", + Version: "3.6.11", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + }) +} + +func TestParseGradleVerificationMetadata_MultipleVersions(t *testing.T) { + t.Parallel() + + packages, err := lockfile.ParseGradleVerificationMetadata("fixtures/gradle-verification-metadata/multiple-versions.xml") + + if err != nil { + t.Errorf("Got unexpected error: %v", err) + } + + expectPackages(t, packages, []lockfile.PackageDetails{ + { + Name: "androidx.activity:activity", + Version: "1.2.1", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "androidx.activity:activity", + Version: "1.2.3", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "androidx.activity:activity", + Version: "1.5.1", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "androidx.activity:activity", + Version: "1.6.0", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "androidx.activity:activity", + Version: "1.7.0", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "androidx.activity:activity", + Version: "1.7.2", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "androidx.activity:activity-compose", + Version: "1.5.0", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "androidx.activity:activity-compose", + Version: "1.7.0", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "androidx.activity:activity-compose", + Version: "1.7.2", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "androidx.activity:activity-ktx", + Version: "1.5.1", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "androidx.activity:activity-ktx", + Version: "1.7.0", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "androidx.activity:activity-ktx", + Version: "1.7.2", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "io.ktor:ktor-serialization-jvm", + Version: "2.0.0", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "io.ktor:ktor-serialization-jvm", + Version: "2.0.0-beta-1", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "io.ktor:ktor-serialization-jvm", + Version: "2.0.3", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.google.auto.service:auto-service", + Version: "1.0-rc4", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.google.auto.service:auto-service", + Version: "1.0.1", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.google.auto.service:auto-service", + Version: "1.1.1", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + }) +} + +func TestParseGradleVerificationMetadata_Complex(t *testing.T) { + t.Parallel() + + packages, err := lockfile.ParseGradleVerificationMetadata("fixtures/gradle-verification-metadata/complex.xml") + + if err != nil { + t.Errorf("Got unexpected error: %v", err) + } + + expectPackages(t, packages, []lockfile.PackageDetails{ + { + Name: "com.google:google", + Version: "1", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.google.errorprone:javac", + Version: "9+181-r4173-1", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.android.tools:sdklib", + Version: "31.3.0", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.android.tools.build:aapt2", + Version: "8.3.0-10880808", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.android.tools.build:aapt2-proto", + Version: "8.3.0-10880808", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.android.tools.build:transform-api", + Version: "2.0.0-deprecated-use-gradle-api", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.android.tools.build.jetifier:jetifier-core", + Version: "1.0.0-beta10", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.android.tools.build.jetifier:jetifier-processor", + Version: "1.0.0-beta10", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.android.tools.emulator:proto", + Version: "31.3.0", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.android.tools.external.com-intellij:intellij-core", + Version: "31.3.0", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.android.tools.external.com-intellij:kotlin-compiler", + Version: "31.3.0", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.android.tools.external.org-jetbrains:uast", + Version: "31.3.0", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.facebook:ktfmt", + Version: "0.47", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.github.ben-manes:gradle-versions-plugin", + Version: "0.51.0", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.github.spullara.mustache.java:compiler", + Version: "0.9.6", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.google.android:annotations", + Version: "4.1.1.4", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.google.apis:google-api-services-androidpublisher", + Version: "v3-rev20231115-2.0.0", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.google.devtools.ksp:symbol-processing", + Version: "1.9.22-1.0.17", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.google.devtools.ksp:symbol-processing-api", + Version: "1.9.22-1.0.17", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.google.devtools.ksp:symbol-processing-gradle-plugin", + Version: "1.9.22-1.0.17", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.google.googlejavaformat:google-java-format", + Version: "1.8", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.google.guava:guava", + Version: "32.0.0-jre", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.google.guava:guava", + Version: "32.0.1-jre", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.google.guava:guava", + Version: "32.1.3-jre", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.google.guava:listenablefuture", + Version: "1.0", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.google.guava:listenablefuture", + Version: "9999.0-empty-to-avoid-conflict-with-guava", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.google.j2objc:j2objc-annotations", + Version: "2.8", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.google.jimfs:jimfs", + Version: "1.1", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.google.testing.platform:core", + Version: "0.0.9-alpha02", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.google.testing.platform:core-proto", + Version: "0.0.9-alpha02", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.google.testing.platform:launcher", + Version: "0.0.9-alpha02", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.h2database:h2", + Version: "2.1.214", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.hankcs:aho-corasick-double-array-trie", + Version: "1.2.3", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.jakewharton.android.repackaged:dalvik-dx", + Version: "9.0.0_r3", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.samskivert:jmustache", + Version: "1.15", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.squareup.curtains:curtains", + Version: "1.2.4", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.vaadin.external.google:android-json", + Version: "0.0.20131108.vaadin1", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "commons-logging:commons-logging", + Version: "1.2", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "commons-logging:commons-logging", + Version: "1.3.0", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "commons-validator:commons-validator", + Version: "1.7", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "commons-validator:commons-validator", + Version: "1.8.0", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "de.mannodermaus.gradle.plugins:android-junit5", + Version: "1.10.0.0", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "io.netty:netty-codec-http", + Version: "4.1.93.Final", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "io.netty:netty-codec-http2", + Version: "4.1.93.Final", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "javax.inject:javax.inject", + Version: "1", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "org.jetbrains.intellij.deps:trove4j", + Version: "1.0.20200330", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "org.sonatype.ossindex:ossindex-service-client", + Version: "1.8.2", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "org.tensorflow:tensorflow-lite-metadata", + Version: "0.1.0-rc2", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "org.tukaani:xz", + Version: "1.9", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "org.whitesource:pecoff4j", + Version: "0.0.2.1", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "org.yaml:snakeyaml", + Version: "2.2", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "us.springett:cpe-parser", + Version: "2.0.3", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "org.json:json", + Version: "20180813", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "org.json:json", + Version: "20211205", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "org.json:json", + Version: "20220320", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "junit:junit", + Version: "4.12", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "junit:junit", + Version: "4.13", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "junit:junit", + Version: "4.13.1", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "junit:junit", + Version: "4.13.2", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.almworks.sqlite4java:sqlite4java", + Version: "0.282", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.almworks.sqlite4java:sqlite4java", + Version: "1.0.392", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "org.apache:apache", + Version: "13", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "org.apache:apache", + Version: "15", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "org.apache:apache", + Version: "16", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "org.apache:apache", + Version: "5", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "org.apache:apache", + Version: "9", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + }) +} diff --git a/pkg/lockfile/parse.go b/pkg/lockfile/parse.go index 7f0e0c0a043..af55f1e627d 100644 --- a/pkg/lockfile/parse.go +++ b/pkg/lockfile/parse.go @@ -26,6 +26,7 @@ var parsers = map[string]PackageDetailsParser{ "conan.lock": ParseConanLock, "Gemfile.lock": ParseGemfileLock, "go.mod": ParseGoLock, + "verification-metadata.xml": ParseGradleVerificationMetadata, "gradle.lockfile": ParseGradleLock, "mix.lock": ParseMixLock, "Pipfile.lock": ParsePipenvLock, diff --git a/pkg/lockfile/parse_test.go b/pkg/lockfile/parse_test.go index 47f1a71c515..4b2905c6c4b 100644 --- a/pkg/lockfile/parse_test.go +++ b/pkg/lockfile/parse_test.go @@ -100,6 +100,7 @@ func TestParse_FindsExpectedParsers(t *testing.T) { "conan.lock", "Gemfile.lock", "go.mod", + "gradle/verification-metadata.xml", "gradle.lockfile", "mix.lock", "Pipfile.lock", From d72f3d932d1e251800c148a0f58f58d78dc1d9d2 Mon Sep 17 00:00:00 2001 From: Xueqin Cui <72771658+cuixq@users.noreply.github.com> Date: Fri, 24 May 2024 13:40:11 +1000 Subject: [PATCH 45/68] Add a new Maven pom.xml extractor (#982) The new Maven lockfile extractor aims to resolve the full Maven dependency graph to provide better transitive support https://github.com/google/osv-scanner/issues/35. This is an experimental feature for now. This PR uses deps.dev util package to parse Maven pom.xml, also calls deps.dev API for available versions when resolving a range requirement. --- internal/manifest/fixtures/maven/empty.xml | 7 + .../manifest/fixtures/maven/interpolation.xml | 40 +++ .../fixtures/maven/invalid-syntax.xml | 13 + internal/manifest/fixtures/maven/not-pom.txt | 1 + .../manifest/fixtures/maven/one-package.xml | 13 + .../manifest/fixtures/maven/two-packages.xml | 18 ++ .../maven/with-dependency-management.xml | 33 ++ .../manifest/fixtures/maven/with-scope.xml | 10 + internal/manifest/helpers_test.go | 105 +++++++ internal/manifest/maven.go | 122 ++++++++ internal/manifest/maven_test.go | 293 ++++++++++++++++++ 11 files changed, 655 insertions(+) create mode 100644 internal/manifest/fixtures/maven/empty.xml create mode 100644 internal/manifest/fixtures/maven/interpolation.xml create mode 100644 internal/manifest/fixtures/maven/invalid-syntax.xml create mode 100644 internal/manifest/fixtures/maven/not-pom.txt create mode 100644 internal/manifest/fixtures/maven/one-package.xml create mode 100644 internal/manifest/fixtures/maven/two-packages.xml create mode 100644 internal/manifest/fixtures/maven/with-dependency-management.xml create mode 100644 internal/manifest/fixtures/maven/with-scope.xml create mode 100644 internal/manifest/helpers_test.go create mode 100644 internal/manifest/maven.go create mode 100644 internal/manifest/maven_test.go diff --git a/internal/manifest/fixtures/maven/empty.xml b/internal/manifest/fixtures/maven/empty.xml new file mode 100644 index 00000000000..8cfeebaaa4d --- /dev/null +++ b/internal/manifest/fixtures/maven/empty.xml @@ -0,0 +1,7 @@ + + 4.0.0 + + com.mycompany.app + my-app + 1 + diff --git a/internal/manifest/fixtures/maven/interpolation.xml b/internal/manifest/fixtures/maven/interpolation.xml new file mode 100644 index 00000000000..eb783c8e710 --- /dev/null +++ b/internal/manifest/fixtures/maven/interpolation.xml @@ -0,0 +1,40 @@ + + + 4.0.0 + + io.library + my-library + 1.0-SNAPSHOT + jar + + + 1.0.0 + 2.3.4 + [9.4.35.v20201120,9.5) + + + + + org.mine + mypackage + ${mypackageVersion} + + + + org.mine + my.package + ${my.package.version} + + + + + + + org.mine + ranged-package + ${version-range} + + + + diff --git a/internal/manifest/fixtures/maven/invalid-syntax.xml b/internal/manifest/fixtures/maven/invalid-syntax.xml new file mode 100644 index 00000000000..761a32c1abb --- /dev/null +++ b/internal/manifest/fixtures/maven/invalid-syntax.xml @@ -0,0 +1,13 @@ + + + <${Id}.version>${project.version} + + + + + io.netty + netty-all + 4.1.42.Final + + + diff --git a/internal/manifest/fixtures/maven/not-pom.txt b/internal/manifest/fixtures/maven/not-pom.txt new file mode 100644 index 00000000000..f9df712bcb2 --- /dev/null +++ b/internal/manifest/fixtures/maven/not-pom.txt @@ -0,0 +1 @@ +this is not a pom.xml file! diff --git a/internal/manifest/fixtures/maven/one-package.xml b/internal/manifest/fixtures/maven/one-package.xml new file mode 100644 index 00000000000..4d9618b3e9c --- /dev/null +++ b/internal/manifest/fixtures/maven/one-package.xml @@ -0,0 +1,13 @@ + + + 3.0 + + + + + org.apache.maven + maven-artifact + 1.0.0 + + + diff --git a/internal/manifest/fixtures/maven/two-packages.xml b/internal/manifest/fixtures/maven/two-packages.xml new file mode 100644 index 00000000000..f5f0a98bfef --- /dev/null +++ b/internal/manifest/fixtures/maven/two-packages.xml @@ -0,0 +1,18 @@ + + + 3.0 + + + + + io.netty + netty-all + 4.1.42.Final + + + org.slf4j + slf4j-log4j12 + 1.7.25 + + + diff --git a/internal/manifest/fixtures/maven/with-dependency-management.xml b/internal/manifest/fixtures/maven/with-dependency-management.xml new file mode 100644 index 00000000000..76f419c16d5 --- /dev/null +++ b/internal/manifest/fixtures/maven/with-dependency-management.xml @@ -0,0 +1,33 @@ + + + 3.0 + + + + + io.netty + netty-all + 4.1.9 + + + org.slf4j + slf4j-log4j12 + 1.7.25 + + + + + + + io.netty + netty-all + 4.1.42.Final + + + com.google.code.findbugs + jsr305 + 3.0.2 + + + + diff --git a/internal/manifest/fixtures/maven/with-scope.xml b/internal/manifest/fixtures/maven/with-scope.xml new file mode 100644 index 00000000000..179b05a3175 --- /dev/null +++ b/internal/manifest/fixtures/maven/with-scope.xml @@ -0,0 +1,10 @@ + + + + junit + junit + 4.12 + test + + + diff --git a/internal/manifest/helpers_test.go b/internal/manifest/helpers_test.go new file mode 100644 index 00000000000..ffcab3d06ea --- /dev/null +++ b/internal/manifest/helpers_test.go @@ -0,0 +1,105 @@ +package manifest_test + +import ( + "errors" + "fmt" + "reflect" + "strings" + "testing" + + "github.com/google/osv-scanner/internal/output" + "github.com/google/osv-scanner/pkg/lockfile" +) + +func expectErrContaining(t *testing.T, err error, str string) { + t.Helper() + + if err == nil { + t.Errorf("Expected to get error, but did not") + } + + if !strings.Contains(err.Error(), str) { + t.Errorf("Expected to get \"%s\" error, but got \"%v\"", str, err) + } +} + +func expectErrIs(t *testing.T, err error, expected error) { + t.Helper() + + if err == nil { + t.Errorf("Expected to get error, but did not") + } + + if !errors.Is(err, expected) { + t.Errorf("Expected to get \"%v\" error but got \"%v\" instead", expected, err) + } +} + +func packageToString(pkg lockfile.PackageDetails) string { + commit := pkg.Commit + + if commit == "" { + commit = "" + } + + groups := strings.Join(pkg.DepGroups, ", ") + + if groups == "" { + groups = "" + } + + return fmt.Sprintf("%s@%s (%s, %s, %s)", pkg.Name, pkg.Version, pkg.Ecosystem, commit, groups) +} + +func hasPackage(t *testing.T, packages []lockfile.PackageDetails, pkg lockfile.PackageDetails) bool { + t.Helper() + + for _, details := range packages { + if reflect.DeepEqual(details, pkg) { + return true + } + } + + return false +} + +func findMissingPackages(t *testing.T, actualPackages []lockfile.PackageDetails, expectedPackages []lockfile.PackageDetails) []lockfile.PackageDetails { + t.Helper() + var missingPackages []lockfile.PackageDetails + + for _, pkg := range actualPackages { + if !hasPackage(t, expectedPackages, pkg) { + missingPackages = append(missingPackages, pkg) + } + } + + return missingPackages +} + +func expectPackages(t *testing.T, actualPackages []lockfile.PackageDetails, expectedPackages []lockfile.PackageDetails) { + t.Helper() + + if len(expectedPackages) != len(actualPackages) { + t.Errorf( + "Expected to get %d %s, but got %d", + len(expectedPackages), + output.Form(len(expectedPackages), "package", "packages"), + len(actualPackages), + ) + } + + missingActualPackages := findMissingPackages(t, actualPackages, expectedPackages) + missingExpectedPackages := findMissingPackages(t, expectedPackages, actualPackages) + + if len(missingActualPackages) != 0 { + for _, unexpectedPackage := range missingActualPackages { + t.Errorf("Did not expect %s", packageToString(unexpectedPackage)) + } + } + + if len(missingExpectedPackages) != 0 { + for _, unexpectedPackage := range missingExpectedPackages { + t.Errorf("Did not find %s", packageToString(unexpectedPackage)) + } + } +} diff --git a/internal/manifest/maven.go b/internal/manifest/maven.go new file mode 100644 index 00000000000..8c6a191e38f --- /dev/null +++ b/internal/manifest/maven.go @@ -0,0 +1,122 @@ +package manifest + +import ( + "context" + "encoding/xml" + "fmt" + "path/filepath" + + depsdevpb "deps.dev/api/v3" + "deps.dev/util/maven" + "deps.dev/util/semver" + "github.com/google/osv-scanner/pkg/lockfile" + "golang.org/x/exp/maps" +) + +type MavenResolverExtractor struct { + Client depsdevpb.InsightsClient +} + +func (e MavenResolverExtractor) ShouldExtract(path string) bool { + return filepath.Base(path) == "pom.xml" +} + +func (e MavenResolverExtractor) Extract(f lockfile.DepFile) ([]lockfile.PackageDetails, error) { + ctx := context.Background() + + var project maven.Project + if err := xml.NewDecoder(f).Decode(&project); err != nil { + return []lockfile.PackageDetails{}, fmt.Errorf("could not extract from %s: %w", f.Path(), err) + } + if err := project.Interpolate(); err != nil { + return []lockfile.PackageDetails{}, fmt.Errorf("could not interpolate Maven project %s: %w", project.ProjectKey.Name(), err) + } + + details := map[string]lockfile.PackageDetails{} + + for _, dep := range project.Dependencies { + name := dep.Name() + v, err := e.resolveVersion(ctx, dep) + if err != nil { + return []lockfile.PackageDetails{}, err + } + pkgDetails := lockfile.PackageDetails{ + Name: name, + Version: v, + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + } + if dep.Scope != "" { + pkgDetails.DepGroups = append(pkgDetails.DepGroups, string(dep.Scope)) + } + // A dependency may be declared more than one times, we keep the details + // from the last declared one as what `mvn` does. + details[name] = pkgDetails + } + + // managed dependencies take precedent over standard dependencies + for _, dep := range project.DependencyManagement.Dependencies { + name := dep.Name() + v, err := e.resolveVersion(ctx, dep) + if err != nil { + return []lockfile.PackageDetails{}, err + } + pkgDetails := lockfile.PackageDetails{ + Name: name, + Version: v, + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + } + if dep.Scope != "" { + pkgDetails.DepGroups = append(pkgDetails.DepGroups, string(dep.Scope)) + } + // A dependency may be declared more than one times, we keep the details + // from the last declared one as what `mvn` does. + details[name] = pkgDetails + } + + return maps.Values(details), nil +} + +func (e MavenResolverExtractor) resolveVersion(ctx context.Context, dep maven.Dependency) (string, error) { + constraint, err := semver.Maven.ParseConstraint(string(dep.Version)) + if err != nil { + return "", fmt.Errorf("failed parsing Maven constraint %s: %w", dep.Version, err) + } + if constraint.IsSimple() { + // Return the constraint if it is a simple version string. + return constraint.String(), nil + } + + // Otherwise return the greatest version matching the constraint. + // TODO: invoke Maven resolver to decide the exact version. + resp, err := e.Client.GetPackage(ctx, &depsdevpb.GetPackageRequest{ + PackageKey: &depsdevpb.PackageKey{ + System: depsdevpb.System_MAVEN, + Name: dep.Name(), + }, + }) + if err != nil { + return "", fmt.Errorf("requesting versions of Maven package %s: %w", dep.Name(), err) + } + + var result *semver.Version + for _, ver := range resp.GetVersions() { + v, _ := semver.Maven.Parse(ver.GetVersionKey().GetVersion()) + if constraint.MatchVersion(v) && result.Compare(v) < 0 { + result = v + } + } + + return result.String(), nil +} + +func ParseMavenWithResolver(depsdev depsdevpb.InsightsClient, pathToLockfile string) ([]lockfile.PackageDetails, error) { + f, err := lockfile.OpenLocalDepFile(pathToLockfile) + if err != nil { + return []lockfile.PackageDetails{}, err + } + defer f.Close() + + return MavenResolverExtractor{Client: depsdev}.Extract(f) +} diff --git a/internal/manifest/maven_test.go b/internal/manifest/maven_test.go new file mode 100644 index 00000000000..a75a34658c1 --- /dev/null +++ b/internal/manifest/maven_test.go @@ -0,0 +1,293 @@ +package manifest_test + +import ( + "context" + "errors" + "io/fs" + "testing" + + depsdevpb "deps.dev/api/v3" + "github.com/google/osv-scanner/internal/manifest" + "github.com/google/osv-scanner/pkg/lockfile" + "google.golang.org/grpc" +) + +type fakeDepsDevClient struct { + depsdevpb.InsightsClient +} + +func (c *fakeDepsDevClient) GetPackage(ctx context.Context, in *depsdevpb.GetPackageRequest, opts ...grpc.CallOption) (*depsdevpb.Package, error) { + if in.GetPackageKey().GetName() == "org.mine:ranged-package" { + return &depsdevpb.Package{ + Versions: []*depsdevpb.Package_Version{ + { + VersionKey: &depsdevpb.VersionKey{ + Version: "9.4.35", + }, + }, + { + VersionKey: &depsdevpb.VersionKey{ + Version: "9.4.36", + }, + }, + { + VersionKey: &depsdevpb.VersionKey{ + Version: "9.4.37", + }, + }, + { + VersionKey: &depsdevpb.VersionKey{ + Version: "9.5", + }, + }, + }, + }, nil + } + + return nil, errors.New("package not found") +} + +func (c *fakeDepsDevClient) GetVersion(ctx context.Context, in *depsdevpb.GetVersionRequest, opts ...grpc.CallOption) (*depsdevpb.Version, error) { + return nil, errors.New("not implemented") +} + +func (c *fakeDepsDevClient) GetRequirements(ctx context.Context, in *depsdevpb.GetRequirementsRequest, opts ...grpc.CallOption) (*depsdevpb.Requirements, error) { + return nil, errors.New("not implemented") +} + +func (c *fakeDepsDevClient) GetDependencies(ctx context.Context, in *depsdevpb.GetDependenciesRequest, opts ...grpc.CallOption) (*depsdevpb.Dependencies, error) { + return nil, errors.New("not implemented") +} + +func (c *fakeDepsDevClient) GetProject(ctx context.Context, in *depsdevpb.GetProjectRequest, opts ...grpc.CallOption) (*depsdevpb.Project, error) { + return nil, errors.New("not implemented") +} + +func (c *fakeDepsDevClient) GetProjectPackageVersions(ctx context.Context, in *depsdevpb.GetProjectPackageVersionsRequest, opts ...grpc.CallOption) (*depsdevpb.ProjectPackageVersions, error) { + return nil, errors.New("not implemented") +} + +func (c *fakeDepsDevClient) GetAdvisory(ctx context.Context, in *depsdevpb.GetAdvisoryRequest, opts ...grpc.CallOption) (*depsdevpb.Advisory, error) { + return nil, errors.New("not implemented") +} + +func (c *fakeDepsDevClient) Query(ctx context.Context, in *depsdevpb.QueryRequest, opts ...grpc.CallOption) (*depsdevpb.QueryResult, error) { + return nil, errors.New("not implemented") +} + +func TestMavenResolverExtractor_ShouldExtract(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + path string + want bool + }{ + { + name: "", + path: "", + want: false, + }, + { + name: "", + path: "pom.xml", + want: true, + }, + { + name: "", + path: "path/to/my/pom.xml", + want: true, + }, + { + name: "", + path: "path/to/my/pom.xml/file", + want: false, + }, + { + name: "", + path: "path/to/my/pom.xml.file", + want: false, + }, + { + name: "", + path: "path.to.my.pom.xml", + want: false, + }, + } + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + e := manifest.MavenResolverExtractor{} + got := e.ShouldExtract(tt.path) + if got != tt.want { + t.Errorf("Extract() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestParseMavenWithResolver_FileDoesNotExist(t *testing.T) { + t.Parallel() + + packages, err := manifest.ParseMavenWithResolver(nil, "fixtures/maven/does-not-exist") + + expectErrIs(t, err, fs.ErrNotExist) + expectPackages(t, packages, []lockfile.PackageDetails{}) +} + +func TestParseMavenWithResolver_Invalid(t *testing.T) { + t.Parallel() + + packages, err := manifest.ParseMavenWithResolver(nil, "fixtures/maven/not-pom.txt") + + expectErrContaining(t, err, "could not extract from") + expectPackages(t, packages, []lockfile.PackageDetails{}) +} + +func TestParseMavenWithResolver_InvalidSyntax(t *testing.T) { + t.Parallel() + + packages, err := manifest.ParseMavenWithResolver(nil, "fixtures/maven/invalid-syntax.xml") + + expectErrContaining(t, err, "XML syntax error") + expectPackages(t, packages, []lockfile.PackageDetails{}) +} + +func TestParseMavenWithResolver_NoPackages(t *testing.T) { + t.Parallel() + + packages, err := manifest.ParseMavenWithResolver(nil, "fixtures/maven/empty.xml") + + if err != nil { + t.Errorf("Got unexpected error: %v", err) + } + + expectPackages(t, packages, []lockfile.PackageDetails{}) +} + +func TestParseMavenWithResolver_OnePackage(t *testing.T) { + t.Parallel() + + packages, err := manifest.ParseMavenWithResolver(nil, "fixtures/maven/one-package.xml") + + if err != nil { + t.Errorf("Got unexpected error: %v", err) + } + + expectPackages(t, packages, []lockfile.PackageDetails{ + { + Name: "org.apache.maven:maven-artifact", + Version: "1.0.0", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + }) +} + +func TestParseMavenWithResolver_TwoPackages(t *testing.T) { + t.Parallel() + + packages, err := manifest.ParseMavenWithResolver(nil, "fixtures/maven/two-packages.xml") + + if err != nil { + t.Errorf("Got unexpected error: %v", err) + } + + expectPackages(t, packages, []lockfile.PackageDetails{ + { + Name: "io.netty:netty-all", + Version: "4.1.42.Final", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "org.slf4j:slf4j-log4j12", + Version: "1.7.25", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + }) +} + +func TestParseMavenWithResolver_WithDependencyManagement(t *testing.T) { + t.Parallel() + + packages, err := manifest.ParseMavenWithResolver(nil, "fixtures/maven/with-dependency-management.xml") + + if err != nil { + t.Errorf("Got unexpected error: %v", err) + } + + expectPackages(t, packages, []lockfile.PackageDetails{ + { + Name: "io.netty:netty-all", + Version: "4.1.42.Final", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "org.slf4j:slf4j-log4j12", + Version: "1.7.25", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "com.google.code.findbugs:jsr305", + Version: "3.0.2", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + }) +} + +func TestParseMavenWithResolver_Interpolation(t *testing.T) { + t.Parallel() + + packages, err := manifest.ParseMavenWithResolver(&fakeDepsDevClient{}, "fixtures/maven/interpolation.xml") + + if err != nil { + t.Errorf("Got unexpected error: %v", err) + } + + expectPackages(t, packages, []lockfile.PackageDetails{ + { + Name: "org.mine:mypackage", + Version: "1.0.0", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "org.mine:my.package", + Version: "2.3.4", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "org.mine:ranged-package", + Version: "9.4.37", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + }) +} + +func TestParseMavenWithResolver_WithScope(t *testing.T) { + t.Parallel() + + packages, err := manifest.ParseMavenWithResolver(nil, "fixtures/maven/with-scope.xml") + + if err != nil { + t.Errorf("Got unexpected error: %v", err) + } + + expectPackages(t, packages, []lockfile.PackageDetails{ + { + Name: "junit:junit", + Version: "4.12", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + DepGroups: []string{"test"}, + }, + }) +} From c4caa03c5ab9f82d0e71b51da48b9c2e6b25653b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 24 May 2024 05:52:22 +0200 Subject: [PATCH 46/68] fix(deps): update osv-scanner minor (#978) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [github.com/charmbracelet/bubbletea](https://togithub.com/charmbracelet/bubbletea) | `v0.26.1` -> `v0.26.2` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fcharmbracelet%2fbubbletea/v0.26.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fcharmbracelet%2fbubbletea/v0.26.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fcharmbracelet%2fbubbletea/v0.26.1/v0.26.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fcharmbracelet%2fbubbletea/v0.26.1/v0.26.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [github.com/package-url/packageurl-go](https://togithub.com/package-url/packageurl-go) | `v0.1.2` -> `v0.1.3` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fpackage-url%2fpackageurl-go/v0.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fpackage-url%2fpackageurl-go/v0.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fpackage-url%2fpackageurl-go/v0.1.2/v0.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fpackage-url%2fpackageurl-go/v0.1.2/v0.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | golang.org/x/exp | `v0.0.0-20240416160154-fe59bbe5cc7f` -> `v0.0.0-20240506185415-9bf2ced13842` | [![age](https://developer.mend.io/api/mc/badges/age/go/golang.org%2fx%2fexp/v0.0.0-20240506185415-9bf2ced13842?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/golang.org%2fx%2fexp/v0.0.0-20240506185415-9bf2ced13842?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/golang.org%2fx%2fexp/v0.0.0-20240416160154-fe59bbe5cc7f/v0.0.0-20240506185415-9bf2ced13842?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/golang.org%2fx%2fexp/v0.0.0-20240416160154-fe59bbe5cc7f/v0.0.0-20240506185415-9bf2ced13842?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [google.golang.org/grpc](https://togithub.com/grpc/grpc-go) | `v1.63.2` -> `v1.64.0` | [![age](https://developer.mend.io/api/mc/badges/age/go/google.golang.org%2fgrpc/v1.64.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/google.golang.org%2fgrpc/v1.64.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/google.golang.org%2fgrpc/v1.63.2/v1.64.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/google.golang.org%2fgrpc/v1.63.2/v1.64.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [google.golang.org/protobuf](https://togithub.com/protocolbuffers/protobuf-go) | `v1.34.0` -> `v1.34.1` | [![age](https://developer.mend.io/api/mc/badges/age/go/google.golang.org%2fprotobuf/v1.34.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/google.golang.org%2fprotobuf/v1.34.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/google.golang.org%2fprotobuf/v1.34.0/v1.34.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/google.golang.org%2fprotobuf/v1.34.0/v1.34.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
charmbracelet/bubbletea (github.com/charmbracelet/bubbletea) ### [`v0.26.2`](https://togithub.com/charmbracelet/bubbletea/releases/tag/v0.26.2) [Compare Source](https://togithub.com/charmbracelet/bubbletea/compare/v0.26.1...v0.26.2) This fixes a small regression that was introduced in v0.26.0 related to the first line on the first render not being displayed correctly. Thank you [@​mistakenelf](https://togithub.com/mistakenelf) for pointing this out in [https://github.com/charmbracelet/bubbletea/issues/1000](https://togithub.com/charmbracelet/bubbletea/issues/1000)! #### What's Changed - fix: stop and drain timers by [@​caarlos0](https://togithub.com/caarlos0) in [https://github.com/charmbracelet/bubbletea/pull/993](https://togithub.com/charmbracelet/bubbletea/pull/993) - chore(lint): minor lint-related improvements by [@​meowgorithm](https://togithub.com/meowgorithm) in [https://github.com/charmbracelet/bubbletea/pull/1007](https://togithub.com/charmbracelet/bubbletea/pull/1007) - fix: renderer: reset the cursor on the first line by [@​aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/bubbletea/pull/1008](https://togithub.com/charmbracelet/bubbletea/pull/1008) - chore(deps): bump golang.org/x/sys from 0.19.0 to 0.20.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/charmbracelet/bubbletea/pull/1003](https://togithub.com/charmbracelet/bubbletea/pull/1003) - chore(deps): bump golangci/golangci-lint-action from 5 to 6 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/charmbracelet/bubbletea/pull/1005](https://togithub.com/charmbracelet/bubbletea/pull/1005) - chore(deps): bump golang.org/x/term from 0.19.0 to 0.20.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/charmbracelet/bubbletea/pull/1002](https://togithub.com/charmbracelet/bubbletea/pull/1002) **Full Changelog**: https://github.com/charmbracelet/bubbletea/compare/v0.26.1...v0.26.2 *** The Charm logo Thoughts? Questions? We love hearing from you. Feel free to reach out on [Twitter](https://twitter.com/charmcli), [The Fediverse](https://mastodon.social/@​charmcli), or [Discord](https://charm.sh/chat).
package-url/packageurl-go (github.com/package-url/packageurl-go) ### [`v0.1.3`](https://togithub.com/package-url/packageurl-go/releases/tag/v0.1.3) [Compare Source](https://togithub.com/package-url/packageurl-go/compare/v0.1.2...v0.1.3) #### What's Changed - go.mod: Bump required Go version to 1.18 by [@​magnusbaeck](https://togithub.com/magnusbaeck) in [https://github.com/package-url/packageurl-go/pull/66](https://togithub.com/package-url/packageurl-go/pull/66) - Fix Github Actions by [@​shibumi](https://togithub.com/shibumi) in [https://github.com/package-url/packageurl-go/pull/69](https://togithub.com/package-url/packageurl-go/pull/69) - Adds `./` and `../` as valid subpath prefix by [@​ridhoq](https://togithub.com/ridhoq) in [https://github.com/package-url/packageurl-go/pull/68](https://togithub.com/package-url/packageurl-go/pull/68) #### New Contributors - [@​magnusbaeck](https://togithub.com/magnusbaeck) made their first contribution in [https://github.com/package-url/packageurl-go/pull/66](https://togithub.com/package-url/packageurl-go/pull/66) - [@​ridhoq](https://togithub.com/ridhoq) made their first contribution in [https://github.com/package-url/packageurl-go/pull/68](https://togithub.com/package-url/packageurl-go/pull/68) **Full Changelog**: https://github.com/package-url/packageurl-go/compare/v0.1.2...v0.1.3
grpc/grpc-go (google.golang.org/grpc) ### [`v1.64.0`](https://togithub.com/grpc/grpc-go/releases/tag/v1.64.0): Release 1.64.0 [Compare Source](https://togithub.com/grpc/grpc-go/compare/v1.63.2...v1.64.0) ### API Changes - stats: Deprecate `InPayload.Data` and `OutPayload.Data`; they were experimental and will be deleted in the next release ([#​7121](https://togithub.com/grpc/grpc-go/issues/7121)) ### Behavior Changes - codec: Remove handling of environment variable `GRPC_GO_ADVERTISE_COMPRESSORS` to suppress setting supported compressors in `grpc-accept-encoding` header. Compressors will always be advertised, as they have been by default for some time ([#​7203](https://togithub.com/grpc/grpc-go/issues/7203)) ### New Features - resolver/dns: Add `SetMinResolutionInterval` to set the minimum interval at which DNS re-resolutions may occur ([#​6962](https://togithub.com/grpc/grpc-go/issues/6962)) - Special Thanks: [@​HomayoonAlimohammadi](https://togithub.com/HomayoonAlimohammadi) - peer/peer: Implement the `fmt.Stringer` interface for pretty printing `Peer`, and - metadata/metadata: Implement the `fmt.Stringer` interface for pretty printing `MD` ([#​7137](https://togithub.com/grpc/grpc-go/issues/7137)) - Special Thanks: [@​AnomalRoil](https://togithub.com/AnomalRoil) ### Performance Improvements - client: Improve RPC performance by reducing work while holding a lock ([#​7132](https://togithub.com/grpc/grpc-go/issues/7132)) ### Bug Fixes - transport/server: Display the proper timeout value when keepalive pings are not ack'd in time ([#​7038](https://togithub.com/grpc/grpc-go/issues/7038)) - Special Thanks: [@​BatmanAoD](https://togithub.com/BatmanAoD) - channelz: Fix bug that was causing the subchannel's target to be unset ([#​7189](https://togithub.com/grpc/grpc-go/issues/7189)) - stats: Fix bug where peer was not set in context when calling stats handler for `OutPayload`, `InPayload`, and `End` ([#​7096](https://togithub.com/grpc/grpc-go/issues/7096)) ### Dependencies - deps: Remove dependency on deprecated `github.com/golang/protobuf` module ([#​7122](https://togithub.com/grpc/grpc-go/issues/7122)) ### Documentation - grpc: Deprecate `WithBlock`, `WithReturnConnectionError`, `FailOnNonTempDialError` which are ignored by `NewClient` ([#​7097](https://togithub.com/grpc/grpc-go/issues/7097)) - Special Thanks: [@​pellared](https://togithub.com/pellared) - grpc: Deprecate `Dial` and `DialContext`. These will continue to be supported throughout 1.x, but are deprecated to direct users to `NewClient` (See [#​7090](https://togithub.com/grpc/grpc-go/issues/7090) for more information) - examples: Add custom lb example ([#​6691](https://togithub.com/grpc/grpc-go/issues/6691))
protocolbuffers/protobuf-go (google.golang.org/protobuf) ### [`v1.34.1`](https://togithub.com/protocolbuffers/protobuf-go/releases/tag/v1.34.1) [Compare Source](https://togithub.com/protocolbuffers/protobuf-go/compare/v1.34.0...v1.34.1) Minor fixes for editions compliance: - [CL/582635](https://go.dev/cl/582635): all: update to protobuf 27.0-rc1 and regenerate protos - [CL/582755](https://go.dev/cl/582755): encoding/proto\[json|text]: accept lower case names for group-like fields
--- ### Configuration 📅 **Schedule**: Branch creation - "before 6am on monday" in timezone Australia/Sydney, Automerge - At any time (no schedule defined). đŸšĻ **Automerge**: Disabled by config. Please merge this manually once you are satisfied. â™ģ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. đŸ‘ģ **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/google/osv-scanner). --------- Co-authored-by: Xueqin Cui <72771658+cuixq@users.noreply.github.com> --- go.mod | 22 +++++----- go.sum | 44 +++++++++---------- .../resolution/client/npm_registry_client.go | 2 +- internal/resolution/datasource/depsdev_api.go | 2 +- pkg/depsdev/license.go | 2 +- 5 files changed, 36 insertions(+), 36 deletions(-) diff --git a/go.mod b/go.mod index 009e2033070..85682364150 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/BurntSushi/toml v1.3.2 github.com/CycloneDX/cyclonedx-go v0.8.0 github.com/charmbracelet/bubbles v0.18.0 - github.com/charmbracelet/bubbletea v0.26.1 + github.com/charmbracelet/bubbletea v0.26.2 github.com/charmbracelet/glamour v0.7.0 github.com/charmbracelet/lipgloss v0.10.0 github.com/dghubble/trie v0.1.0 @@ -23,20 +23,20 @@ require ( github.com/jedib0t/go-pretty/v6 v6.5.9 github.com/muesli/reflow v0.3.0 github.com/owenrumney/go-sarif/v2 v2.3.1 - github.com/package-url/packageurl-go v0.1.2 + github.com/package-url/packageurl-go v0.1.3 github.com/pandatix/go-cvss v0.6.2 github.com/spdx/tools-golang v0.5.4 github.com/tidwall/gjson v1.17.1 github.com/tidwall/pretty v1.2.1 github.com/tidwall/sjson v1.2.5 github.com/urfave/cli/v2 v2.27.2 - golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f + golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 golang.org/x/mod v0.17.0 golang.org/x/sync v0.7.0 golang.org/x/term v0.20.0 golang.org/x/vuln v1.0.4 - google.golang.org/grpc v1.63.2 - google.golang.org/protobuf v1.34.0 + google.golang.org/grpc v1.64.0 + google.golang.org/protobuf v1.34.1 gopkg.in/ini.v1 v1.67.0 gopkg.in/yaml.v3 v3.0.1 ) @@ -99,12 +99,12 @@ require ( github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 // indirect github.com/yuin/goldmark v1.7.0 // indirect github.com/yuin/goldmark-emoji v1.0.2 // indirect - golang.org/x/crypto v0.22.0 // indirect - golang.org/x/net v0.24.0 // indirect + golang.org/x/crypto v0.23.0 // indirect + golang.org/x/net v0.25.0 // indirect golang.org/x/sys v0.20.0 // indirect - golang.org/x/text v0.14.0 // indirect - golang.org/x/tools v0.20.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240304212257-790db918fca8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240304212257-790db918fca8 // indirect + golang.org/x/text v0.15.0 // indirect + golang.org/x/tools v0.21.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) diff --git a/go.sum b/go.sum index f153a6de823..9f6357ee4d8 100644 --- a/go.sum +++ b/go.sum @@ -42,8 +42,8 @@ github.com/bradleyjkemp/cupaloy/v2 v2.8.0/go.mod h1:bm7JXdkRd4BHJk9HpwqAI8BoAY1l github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/charmbracelet/bubbles v0.18.0 h1:PYv1A036luoBGroX6VWjQIE9Syf2Wby2oOl/39KLfy0= github.com/charmbracelet/bubbles v0.18.0/go.mod h1:08qhZhtIwzgrtBjAcJnij1t1H0ZRjwHyGsy6AL11PSw= -github.com/charmbracelet/bubbletea v0.26.1 h1:xujcQeF73rh4jwu3+zhfQsvV18x+7zIjlw7/CYbzGJ0= -github.com/charmbracelet/bubbletea v0.26.1/go.mod h1:FzKr7sKoO8iFVcdIBM9J0sJOcQv5nDQaYwsee3kpbgo= +github.com/charmbracelet/bubbletea v0.26.2 h1:Eeb+n75Om9gQ+I6YpbCXQRKHt5Pn4vMwusQpwLiEgJQ= +github.com/charmbracelet/bubbletea v0.26.2/go.mod h1:6I0nZ3YHUrQj7YHIHlM8RySX4ZIthTliMY+W8X8b+Gs= github.com/charmbracelet/glamour v0.7.0 h1:2BtKGZ4iVJCDfMF229EzbeR1QRKLWztO9dMtjmqZSng= github.com/charmbracelet/glamour v0.7.0/go.mod h1:jUMh5MeihljJPQbJ/wf4ldw2+yBP59+ctV36jASy7ps= github.com/charmbracelet/lipgloss v0.10.0 h1:KWeXFSexGcfahHX+54URiZGkBFazf70JNMtwg/AFW3s= @@ -163,8 +163,8 @@ github.com/opencontainers/image-spec v1.1.0-rc3/go.mod h1:X4pATf0uXsnn3g5aiGIsVn github.com/owenrumney/go-sarif v1.1.1/go.mod h1:dNDiPlF04ESR/6fHlPyq7gHKmrM0sHUvAGjsoh8ZH0U= github.com/owenrumney/go-sarif/v2 v2.3.1 h1:77opmuqxQZE1UF6TylFz5XllVEI72WijgwpwNw4JTmY= github.com/owenrumney/go-sarif/v2 v2.3.1/go.mod h1:MSqMMx9WqlBSY7pXoOZWgEsVB4FDNfhcaXDA1j6Sr+w= -github.com/package-url/packageurl-go v0.1.2 h1:0H2DQt6DHd/NeRlVwW4EZ4oEI6Bn40XlNPRqegcxuo4= -github.com/package-url/packageurl-go v0.1.2/go.mod h1:uQd4a7Rh3ZsVg5j0lNyAfyxIeGde9yrlhjF78GzeW0c= +github.com/package-url/packageurl-go v0.1.3 h1:4juMED3hHiz0set3Vq3KeQ75KD1avthoXLtmE3I0PLs= +github.com/package-url/packageurl-go v0.1.3/go.mod h1:nKAWB8E6uk1MHqiS/lQb9pYBGH2+mdJ2PJc2s50dQY0= github.com/pandatix/go-cvss v0.6.2 h1:TFiHlzUkT67s6UkelHmK6s1INKVUG7nlKYiWWDTITGI= github.com/pandatix/go-cvss v0.6.2/go.mod h1:jDXYlQBZrc8nvrMUVVvTG8PhmuShOnKrxP53nOFkt8Q= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= @@ -249,10 +249,10 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= -golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= -golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f h1:99ci1mjWVBWwJiEKYY6jWa4d2nTQVIEhZIptnrVb1XY= -golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= +golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM= +golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= @@ -266,8 +266,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= -golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= +golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -305,26 +305,26 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= -golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= +golang.org/x/tools v0.21.0 h1:qc0xYgIbsSDt9EyWz05J5wfa7LOVW0YTLOXrqdLAWIw= +golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/vuln v1.0.4 h1:SP0mPeg2PmGCu03V+61EcQiOjmpri2XijexKdzv8Z1I= golang.org/x/vuln v1.0.4/go.mod h1:NbJdUQhX8jY++FtuhrXs2Eyx0yePo9pF7nPlIjo9aaQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto/googleapis/api v0.0.0-20240304212257-790db918fca8 h1:8eadJkXbwDEMNwcB5O0s5Y5eCfyuCLdvaiOIaGTrWmQ= -google.golang.org/genproto/googleapis/api v0.0.0-20240304212257-790db918fca8/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240304212257-790db918fca8 h1:IR+hp6ypxjH24bkMfEJ0yHR21+gwPWdV+/IBrPQyn3k= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240304212257-790db918fca8/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs= -google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= -google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= -google.golang.org/protobuf v1.34.0 h1:Qo/qEd2RZPCf2nKuorzksSknv0d3ERwp1vFG38gSmH4= -google.golang.org/protobuf v1.34.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4= +google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= +google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= +google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= +google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/internal/resolution/client/npm_registry_client.go b/internal/resolution/client/npm_registry_client.go index 93f7a924031..d424936cca1 100644 --- a/internal/resolution/client/npm_registry_client.go +++ b/internal/resolution/client/npm_registry_client.go @@ -47,7 +47,7 @@ func NewNpmRegistryClient(workdir string) (*NpmRegistryClient, error) { dialOpts = append(dialOpts, grpc.WithUserAgent(osv.RequestUserAgent)) } - conn, err := grpc.Dial(depsdev.DepsdevAPI, dialOpts...) + conn, err := grpc.NewClient(depsdev.DepsdevAPI, dialOpts...) if err != nil { return nil, fmt.Errorf("dialling %q: %w", depsdev.DepsdevAPI, err) } diff --git a/internal/resolution/datasource/depsdev_api.go b/internal/resolution/datasource/depsdev_api.go index 79a48da783a..4a52e846b5d 100644 --- a/internal/resolution/datasource/depsdev_api.go +++ b/internal/resolution/datasource/depsdev_api.go @@ -64,7 +64,7 @@ func NewDepsDevAPIClient(addr string) (*DepsDevAPIClient, error) { dialOpts = append(dialOpts, grpc.WithUserAgent(osv.RequestUserAgent)) } - conn, err := grpc.Dial(addr, dialOpts...) + conn, err := grpc.NewClient(addr, dialOpts...) if err != nil { return nil, fmt.Errorf("dialling %q: %w", addr, err) } diff --git a/pkg/depsdev/license.go b/pkg/depsdev/license.go index 7a639e4685d..41fb0b9a244 100644 --- a/pkg/depsdev/license.go +++ b/pkg/depsdev/license.go @@ -67,7 +67,7 @@ func MakeVersionRequestsWithContext(ctx context.Context, queries []*depsdevpb.Ge dialOpts = append(dialOpts, grpc.WithUserAgent(osv.RequestUserAgent)) } - conn, err := grpc.Dial(DepsdevAPI, dialOpts...) + conn, err := grpc.NewClient(DepsdevAPI, dialOpts...) if err != nil { return nil, fmt.Errorf("dialing deps.dev gRPC API: %w", err) } From 33e7f93fe099c3fbac4fd116e32f26298726a8f2 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Fri, 24 May 2024 17:20:53 +1200 Subject: [PATCH 47/68] test: add cases for output functions (#937) This introduces a set of crafted scanner results that each supported `output` format is run through to showcase how they look across all the different results possible from a scanner run - it originally started life as the tests for #889 but I realised they could base used more generally for testing and reviewing all the outputters, so here we are. ~It looks like this has also revealed the SARIF output is unstable in its ordering, which I'll aim to address in a dedicated PR~ --- .../__snapshots__/githubannotation_test.snap | 132 + .../__snapshots__/machinejson_test.snap | 2415 +++++++++++++++++ .../__snapshots__/markdowntable_test.snap | 230 ++ internal/output/__snapshots__/sarif_test.snap | 1917 +++++++++++++ internal/output/__snapshots__/table_test.snap | 831 ++++++ internal/output/githubannotation_test.go | 60 + internal/output/helpers_test.go | 1556 +++++++++++ internal/output/machinejson_test.go | 60 + internal/output/markdowntable_test.go | 48 + internal/output/sarif_test.go | 66 + internal/output/table_test.go | 127 + 11 files changed, 7442 insertions(+) create mode 100755 internal/output/__snapshots__/githubannotation_test.snap create mode 100755 internal/output/__snapshots__/machinejson_test.snap create mode 100755 internal/output/__snapshots__/markdowntable_test.snap create mode 100755 internal/output/__snapshots__/table_test.snap create mode 100644 internal/output/githubannotation_test.go create mode 100644 internal/output/helpers_test.go create mode 100644 internal/output/machinejson_test.go create mode 100644 internal/output/markdowntable_test.go create mode 100644 internal/output/table_test.go diff --git a/internal/output/__snapshots__/githubannotation_test.snap b/internal/output/__snapshots__/githubannotation_test.snap new file mode 100755 index 00000000000..591ce3d5725 --- /dev/null +++ b/internal/output/__snapshots__/githubannotation_test.snap @@ -0,0 +1,132 @@ + +[TestPrintGHAnnotationReport_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_no_license_violations - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+::error file=path/to/my/second/lockfile::path/to/my/second/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+::error file=path/to/my/third/lockfile::path/to/my/third/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_some_license_violations - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+::error file=path/to/my/second/lockfile::path/to/my/second/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+::error file=path/to/my/third/lockfile::path/to/my/third/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_some_license_violations#01 - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+::error file=path/to/my/second/lockfile::path/to/my/second/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+::error file=path/to/my/third/lockfile::path/to/my/third/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages_across_ecosystems,_some_license_violations - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+::error file=path/to/my/second/lockfile::path/to/my/second/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+::error file=path/to/my/third/lockfile::path/to/my/third/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages_and_groups,_some_license_violations - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+::error file=path/to/my/second/lockfile::path/to/my/second/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+::error file=path/to/my/third/lockfile::path/to/my/third/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithLicenseViolations/multiple_sources_with_no_packages - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+::error file=path/to/my/second/lockfile::path/to/my/second/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+::error file=path/to/my/third/lockfile::path/to/my/third/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithLicenseViolations/no_sources - 1] + +--- + +[TestPrintGHAnnotationReport_WithLicenseViolations/one_source_with_no_packages - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithLicenseViolations/one_source_with_one_package,_no_license_violations - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithLicenseViolations/one_source_with_one_package,_no_licenses - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithLicenseViolations/one_source_with_one_package_and_an_unknown_license - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithLicenseViolations/one_source_with_one_package_and_multiple_license_violations - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithLicenseViolations/one_source_with_one_package_and_one_license_violation - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithLicenseViolations/one_source_with_one_package_and_one_license_violation_(dev) - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithLicenseViolations/two_sources_with_packages,_one_license_violation - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+::error file=path/to/my/second/lockfile::path/to/my/second/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithMixedIssues/multiple_sources_with_a_mixed_count_of_packages,_some_vulnerabilities_and_license_violations - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+-----------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+-----------------------+------+-----------------+---------------+%0A| mine1 | https://osv.dev/OSV-1 | | 1.2.3 | |%0A+---------+-----------------------+------+-----------------+---------------+::error file=path/to/my/second/lockfile::path/to/my/second/lockfile%0A+---------+-----------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+-----------------------+------+-----------------+---------------+%0A| mine2 | https://osv.dev/OSV-2 | | 3.2.5 | |%0A+---------+-----------------------+------+-----------------+---------------+::error file=path/to/my/third/lockfile::path/to/my/third/lockfile%0A+---------+-----------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+-----------------------+------+-----------------+---------------+%0A| mine1 | https://osv.dev/OSV-1 | | 1.2.3 | |%0A+---------+-----------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithMixedIssues/one_source_with_one_package,_one_vulnerability,_and_one_license_violation - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+-----------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+-----------------------+------+-----------------+---------------+%0A| mine1 | https://osv.dev/OSV-1 | | 1.2.3 | |%0A+---------+-----------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithMixedIssues/two_sources_with_packages,_one_vulnerability,_one_license_violation - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+-----------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+-----------------------+------+-----------------+---------------+%0A| mine1 | https://osv.dev/OSV-1 | | 1.2.3 | |%0A+---------+-----------------------+------+-----------------+---------------+::error file=path/to/my/second/lockfile::path/to/my/second/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_grouped_packages,_and_multiple_vulnerabilities - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+-----------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+-----------------------+------+-----------------+---------------+%0A| mine1 | https://osv.dev/OSV-1 | | 1.2.3 | |%0A| mine1 | https://osv.dev/OSV-5 | | 1.2.3 | |%0A| mine1 | https://osv.dev/OSV-1 | | 1.2.2 | |%0A+---------+-----------------------+------+-----------------+---------------+::error file=path/to/my/second/lockfile::path/to/my/second/lockfile%0A+---------+-----------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+-----------------------+------+-----------------+---------------+%0A| mine2 | https://osv.dev/OSV-2 | | 3.2.5 | |%0A| mine3 | https://osv.dev/OSV-3 | | 0.4.1 | |%0A| mine3 | https://osv.dev/OSV-5 | | 0.4.1 | |%0A+---------+-----------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_and_multiple_vulnerabilities - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+-----------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+-----------------------+------+-----------------+---------------+%0A| mine1 | https://osv.dev/OSV-1 | | 1.2.3 | |%0A| mine1 | https://osv.dev/OSV-5 | | 1.2.3 | |%0A| mine1 | https://osv.dev/OSV-1 | | 1.2.2 | |%0A+---------+-----------------------+------+-----------------+---------------+::error file=path/to/my/second/lockfile::path/to/my/second/lockfile%0A+---------+-----------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+-----------------------+------+-----------------+---------------+%0A| mine2 | https://osv.dev/OSV-2 | | 3.2.5 | |%0A| mine3 | https://osv.dev/OSV-3 | | 0.4.1 | |%0A| mine3 | https://osv.dev/OSV-5 | | 0.4.1 | |%0A+---------+-----------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_no_vulnerabilities - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+::error file=path/to/my/second/lockfile::path/to/my/second/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+::error file=path/to/my/third/lockfile::path/to/my/third/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_some_vulnerabilities - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+-----------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+-----------------------+------+-----------------+---------------+%0A| mine1 | https://osv.dev/OSV-1 | | 1.2.3 | |%0A+---------+-----------------------+------+-----------------+---------------+::error file=path/to/my/second/lockfile::path/to/my/second/lockfile%0A+---------+-----------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+-----------------------+------+-----------------+---------------+%0A| mine2 | https://osv.dev/OSV-2 | | 3.2.5 | |%0A+---------+-----------------------+------+-----------------+---------------+::error file=path/to/my/third/lockfile::path/to/my/third/lockfile%0A+---------+-----------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+-----------------------+------+-----------------+---------------+%0A| mine1 | https://osv.dev/OSV-1 | | 1.2.3 | |%0A+---------+-----------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages_across_ecosystems,_and_multiple_vulnerabilities - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+-----------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+-----------------------+------+-----------------+---------------+%0A| mine1 | https://osv.dev/OSV-1 | | 1.2.3 | |%0A| mine1 | https://osv.dev/OSV-5 | | 1.2.3 | |%0A| mine1 | https://osv.dev/OSV-1 | | 1.2.2 | |%0A+---------+-----------------------+------+-----------------+---------------+::error file=path/to/my/second/lockfile::path/to/my/second/lockfile%0A+---------+-----------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+-----------------------+------+-----------------+---------------+%0A| mine2 | https://osv.dev/OSV-2 | | 3.2.5 | |%0A| mine3 | https://osv.dev/OSV-3 | | 0.4.1 | |%0A| mine3 | https://osv.dev/OSV-5 | | 0.4.1 | |%0A+---------+-----------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithVulnerabilities/multiple_sources_with_no_packages - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+::error file=path/to/my/second/lockfile::path/to/my/second/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+::error file=path/to/my/third/lockfile::path/to/my/third/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithVulnerabilities/no_sources - 1] + +--- + +[TestPrintGHAnnotationReport_WithVulnerabilities/one_source_with_no_packages - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithVulnerabilities/one_source_with_one_package,_no_vulnerabilities - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithVulnerabilities/one_source_with_one_package_and_one_vulnerability - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+-----------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+-----------------------+------+-----------------+---------------+%0A| mine1 | https://osv.dev/OSV-1 | | 1.2.3 | |%0A+---------+-----------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithVulnerabilities/one_source_with_one_package_and_one_vulnerability_(dev) - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+-----------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+-----------------------+------+-----------------+---------------+%0A| mine1 | https://osv.dev/OSV-1 | | 1.2.3 | |%0A+---------+-----------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithVulnerabilities/one_source_with_one_package_and_two_aliases_of_a_single_vulnerability - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+--------------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+--------------------------+------+-----------------+---------------+%0A| mine1 | https://osv.dev/OSV-1 | | 1.2.3 | |%0A| | https://osv.dev/GHSA-123 | | | |%0A+---------+--------------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithVulnerabilities/one_source_with_vulnerabilities,_some_missing_content - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+-----------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+-----------------------+------+-----------------+---------------+%0A| mine1 | https://osv.dev/OSV-1 | | 1.2.3 | |%0A| mine3 | https://osv.dev/OSV-2 | | 0.10.2-rc | |%0A+---------+-----------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithVulnerabilities/two_sources_with_packages,_one_vulnerability - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+-----------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+-----------------------+------+-----------------+---------------+%0A| mine1 | https://osv.dev/OSV-1 | | 1.2.3 | |%0A+---------+-----------------------+------+-----------------+---------------+::error file=path/to/my/second/lockfile::path/to/my/second/lockfile%0A+---------+------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+------------------+------+-----------------+---------------+%0A+---------+------------------+------+-----------------+---------------+ +--- + +[TestPrintGHAnnotationReport_WithVulnerabilities/two_sources_with_the_same_vulnerable_package - 1] +::error file=path/to/my/first/lockfile::path/to/my/first/lockfile%0A+---------+-----------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+-----------------------+------+-----------------+---------------+%0A| mine1 | https://osv.dev/OSV-1 | | 1.2.3 | |%0A+---------+-----------------------+------+-----------------+---------------+::error file=path/to/my/second/lockfile::path/to/my/second/lockfile%0A+---------+-----------------------+------+-----------------+---------------+%0A| PACKAGE | VULNERABILITY ID | CVSS | CURRENT VERSION | FIXED VERSION |%0A+---------+-----------------------+------+-----------------+---------------+%0A| mine1 | https://osv.dev/OSV-1 | | 1.2.3 | |%0A+---------+-----------------------+------+-----------------+---------------+ +--- diff --git a/internal/output/__snapshots__/machinejson_test.snap b/internal/output/__snapshots__/machinejson_test.snap new file mode 100755 index 00000000000..ff1db9f942c --- /dev/null +++ b/internal/output/__snapshots__/machinejson_test.snap @@ -0,0 +1,2415 @@ + +[TestPrintJSONResults_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_no_license_violations - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "licenses": [ + "ISC" + ] + } + ] + }, + { + "source": { + "path": "path/to/my/second/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine2", + "version": "3.2.5", + "ecosystem": "npm" + }, + "licenses": [ + "ISC" + ] + }, + { + "package": { + "name": "mine3", + "version": "0.4.1", + "ecosystem": "npm" + }, + "licenses": [ + "ISC" + ] + } + ] + }, + { + "source": { + "path": "path/to/my/third/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.3.5", + "ecosystem": "npm" + }, + "licenses": [ + "ISC" + ] + }, + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "licenses": [ + "ISC" + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": [ + "ISC" + ] + } + } +} + +--- + +[TestPrintJSONResults_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_some_license_violations - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "licenses": [ + "MIT" + ], + "license_violations": [ + "MIT" + ] + } + ] + }, + { + "source": { + "path": "path/to/my/second/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine2", + "version": "3.2.5", + "ecosystem": "npm" + }, + "licenses": [ + "Apache-2.0" + ], + "license_violations": [ + "Apache-2.0" + ] + }, + { + "package": { + "name": "mine3", + "version": "0.4.1", + "ecosystem": "npm" + }, + "licenses": [ + "ISC" + ] + } + ] + }, + { + "source": { + "path": "path/to/my/third/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.3.5", + "ecosystem": "npm" + }, + "licenses": [ + "ISC" + ] + }, + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "licenses": [ + "MIT" + ], + "license_violations": [ + "MIT" + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": [ + "ISC" + ] + } + } +} + +--- + +[TestPrintJSONResults_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_some_license_violations#01 - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "licenses": [ + "MIT", + "Apache-2.0" + ], + "license_violations": [ + "MIT" + ] + } + ] + }, + { + "source": { + "path": "path/to/my/second/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine2", + "version": "3.2.5", + "ecosystem": "npm" + }, + "licenses": [ + "UNKNOWN" + ], + "license_violations": [ + "UNKNOWN" + ] + }, + { + "package": { + "name": "mine3", + "version": "0.4.1", + "ecosystem": "npm" + }, + "licenses": [ + "Apache-2.0" + ] + } + ] + }, + { + "source": { + "path": "path/to/my/third/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.3.5", + "ecosystem": "npm" + }, + "licenses": [ + "Apache-2.0" + ] + }, + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "licenses": [ + "MIT" + ], + "license_violations": [ + "MIT" + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": null + } + } +} + +--- + +[TestPrintJSONResults_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages_across_ecosystems,_some_license_violations - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "Packagist" + }, + "licenses": [ + "MIT" + ], + "license_violations": [ + "MIT" + ] + } + ] + }, + { + "source": { + "path": "path/to/my/second/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine2", + "version": "3.2.5", + "ecosystem": "npm" + }, + "licenses": [ + "Apache-2.0" + ], + "license_violations": [ + "Apache-2.0" + ] + }, + { + "package": { + "name": "mine3", + "version": "0.4.1", + "ecosystem": "npm" + }, + "licenses": [ + "ISC" + ] + } + ] + }, + { + "source": { + "path": "path/to/my/third/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.3.5", + "ecosystem": "NuGet" + }, + "licenses": [ + "ISC" + ] + }, + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "Packagist" + }, + "dependency_groups": [ + "dev" + ], + "licenses": [ + "MIT" + ], + "license_violations": [ + "MIT" + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": [ + "ISC" + ] + } + } +} + +--- + +[TestPrintJSONResults_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages_and_groups,_some_license_violations - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "dependency_groups": [ + "dev", + "optional" + ], + "licenses": [ + "MIT" + ], + "license_violations": [ + "MIT" + ] + } + ] + }, + { + "source": { + "path": "path/to/my/second/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine2", + "version": "3.2.5", + "ecosystem": "npm" + }, + "dependency_groups": [ + "dev", + "optional" + ], + "licenses": [ + "Apache-2.0" + ], + "license_violations": [ + "Apache-2.0" + ] + }, + { + "package": { + "name": "mine3", + "version": "0.4.1", + "ecosystem": "npm" + }, + "licenses": [ + "ISC" + ] + } + ] + }, + { + "source": { + "path": "path/to/my/third/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.3.5", + "ecosystem": "npm" + }, + "licenses": [ + "ISC" + ] + }, + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "dependency_groups": [ + "build" + ], + "licenses": [ + "MIT" + ], + "license_violations": [ + "MIT" + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": [ + "ISC" + ] + } + } +} + +--- + +[TestPrintJSONResults_WithLicenseViolations/multiple_sources_with_no_packages - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [] + }, + { + "source": { + "path": "path/to/my/second/lockfile", + "type": "" + }, + "packages": [] + }, + { + "source": { + "path": "path/to/my/third/lockfile", + "type": "" + }, + "packages": [] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": [ + "ISC" + ] + } + } +} + +--- + +[TestPrintJSONResults_WithLicenseViolations/no_sources - 1] +{ + "results": [], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": [ + "ISC" + ] + } + } +} + +--- + +[TestPrintJSONResults_WithLicenseViolations/one_source_with_no_packages - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": [ + "ISC" + ] + } + } +} + +--- + +[TestPrintJSONResults_WithLicenseViolations/one_source_with_one_package,_no_license_violations - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "licenses": [ + "ISC" + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": [ + "ISC" + ] + } + } +} + +--- + +[TestPrintJSONResults_WithLicenseViolations/one_source_with_one_package,_no_licenses - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + } + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": [ + "ISC" + ] + } + } +} + +--- + +[TestPrintJSONResults_WithLicenseViolations/one_source_with_one_package_and_an_unknown_license - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "licenses": [ + "UNKNOWN" + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": [ + "ISC" + ] + } + } +} + +--- + +[TestPrintJSONResults_WithLicenseViolations/one_source_with_one_package_and_multiple_license_violations - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "licenses": [ + "MIT", + "Apache-2.0" + ], + "license_violations": [ + "MIT", + "Apache-2.0" + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": [ + "ISC" + ] + } + } +} + +--- + +[TestPrintJSONResults_WithLicenseViolations/one_source_with_one_package_and_one_license_violation - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "licenses": [ + "MIT" + ], + "license_violations": [ + "MIT" + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": [ + "ISC" + ] + } + } +} + +--- + +[TestPrintJSONResults_WithLicenseViolations/one_source_with_one_package_and_one_license_violation_(dev) - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "dependency_groups": [ + "dev" + ], + "licenses": [ + "MIT" + ], + "license_violations": [ + "MIT" + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": [ + "ISC" + ] + } + } +} + +--- + +[TestPrintJSONResults_WithLicenseViolations/two_sources_with_packages,_one_license_violation - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "licenses": [ + "MIT" + ], + "license_violations": [ + "MIT" + ] + } + ] + }, + { + "source": { + "path": "path/to/my/second/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine2", + "version": "5.9.0", + "ecosystem": "npm" + }, + "licenses": [ + "ISC" + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": [ + "ISC" + ] + } + } +} + +--- + +[TestPrintJSONResults_WithMixedIssues/multiple_sources_with_a_mixed_count_of_packages,_some_vulnerabilities_and_license_violations - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-1", + "summary": "Something scary!", + "severity": [ + { + "type": "high", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-1" + ], + "aliases": null, + "max_severity": "" + } + ], + "licenses": [ + "MIT" + ], + "license_violations": [ + "MIT" + ] + } + ] + }, + { + "source": { + "path": "path/to/my/second/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine2", + "version": "3.2.5", + "ecosystem": "npm" + }, + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-2", + "summary": "Something less scary!", + "severity": [ + { + "type": "low", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-2" + ], + "aliases": null, + "max_severity": "" + } + ], + "licenses": [ + "ISC" + ] + }, + { + "package": { + "name": "mine3", + "version": "0.4.1", + "ecosystem": "npm" + }, + "licenses": [ + "ISC" + ] + } + ] + }, + { + "source": { + "path": "path/to/my/third/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.3.5", + "ecosystem": "npm" + }, + "licenses": [ + "MIT" + ], + "license_violations": [ + "MIT" + ] + }, + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-1", + "summary": "Something scary!", + "severity": [ + { + "type": "high", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-1" + ], + "aliases": null, + "max_severity": "" + } + ], + "licenses": [ + "Apache-2.0" + ], + "license_violations": [ + "Apache-2.0" + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": [ + "ISC" + ] + } + } +} + +--- + +[TestPrintJSONResults_WithMixedIssues/one_source_with_one_package,_one_vulnerability,_and_one_license_violation - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-1", + "summary": "Something scary!", + "severity": [ + { + "type": "high", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-1" + ], + "aliases": null, + "max_severity": "" + } + ], + "licenses": [ + "MIT" + ], + "license_violations": [ + "MIT" + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": [ + "ISC" + ] + } + } +} + +--- + +[TestPrintJSONResults_WithMixedIssues/two_sources_with_packages,_one_vulnerability,_one_license_violation - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-1", + "summary": "Something scary!", + "severity": [ + { + "type": "high", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-1" + ], + "aliases": null, + "max_severity": "" + } + ], + "licenses": [ + "ISC" + ] + } + ] + }, + { + "source": { + "path": "path/to/my/second/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine2", + "version": "5.9.0", + "ecosystem": "npm" + }, + "licenses": [ + "MIT" + ], + "license_violations": [ + "MIT" + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": [ + "ISC" + ] + } + } +} + +--- + +[TestPrintJSONResults_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_grouped_packages,_and_multiple_vulnerabilities - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "dependency_groups": [ + "dev", + "optional" + ], + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-1", + "summary": "Something scary!", + "severity": [ + { + "type": "high", + "score": "1" + } + ] + }, + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-5", + "summary": "Something scarier!", + "severity": [ + { + "type": "extreme", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-1" + ], + "aliases": null, + "max_severity": "" + }, + { + "ids": [ + "OSV-5" + ], + "aliases": null, + "max_severity": "" + } + ] + }, + { + "package": { + "name": "mine1", + "version": "1.2.2", + "ecosystem": "npm" + }, + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-1", + "summary": "Something scary!", + "severity": [ + { + "type": "high", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-1" + ], + "aliases": null, + "max_severity": "" + } + ] + } + ] + }, + { + "source": { + "path": "path/to/my/second/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine2", + "version": "3.2.5", + "ecosystem": "npm" + }, + "dependency_groups": [ + "dev" + ], + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-2", + "summary": "Something less scary!", + "severity": [ + { + "type": "low", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-2" + ], + "aliases": null, + "max_severity": "" + } + ] + }, + { + "package": { + "name": "mine3", + "version": "0.4.1", + "ecosystem": "npm" + }, + "dependency_groups": [ + "build" + ], + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-3", + "summary": "Something mildly scary!", + "severity": [ + { + "type": "medium", + "score": "1" + } + ] + }, + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-5", + "summary": "Something scarier!", + "severity": [ + { + "type": "extreme", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-3" + ], + "aliases": null, + "max_severity": "" + }, + { + "ids": [ + "OSV-5" + ], + "aliases": null, + "max_severity": "" + } + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": null + } + } +} + +--- + +[TestPrintJSONResults_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_and_multiple_vulnerabilities - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-1", + "summary": "Something scary!", + "severity": [ + { + "type": "high", + "score": "1" + } + ] + }, + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-5", + "summary": "Something scarier!", + "severity": [ + { + "type": "extreme", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-1" + ], + "aliases": null, + "max_severity": "" + }, + { + "ids": [ + "OSV-5" + ], + "aliases": null, + "max_severity": "" + } + ] + }, + { + "package": { + "name": "mine1", + "version": "1.2.2", + "ecosystem": "npm" + }, + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-1", + "summary": "Something scary!", + "severity": [ + { + "type": "high", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-1" + ], + "aliases": null, + "max_severity": "" + } + ] + } + ] + }, + { + "source": { + "path": "path/to/my/second/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine2", + "version": "3.2.5", + "ecosystem": "npm" + }, + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-2", + "summary": "Something less scary!", + "severity": [ + { + "type": "low", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-2" + ], + "aliases": null, + "max_severity": "" + } + ] + }, + { + "package": { + "name": "mine3", + "version": "0.4.1", + "ecosystem": "npm" + }, + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-3", + "summary": "Something mildly scary!", + "severity": [ + { + "type": "medium", + "score": "1" + } + ] + }, + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-5", + "summary": "Something scarier!", + "severity": [ + { + "type": "extreme", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-3" + ], + "aliases": null, + "max_severity": "" + }, + { + "ids": [ + "OSV-5" + ], + "aliases": null, + "max_severity": "" + } + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": null + } + } +} + +--- + +[TestPrintJSONResults_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_no_vulnerabilities - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + } + } + ] + }, + { + "source": { + "path": "path/to/my/second/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine2", + "version": "3.2.5", + "ecosystem": "npm" + } + }, + { + "package": { + "name": "mine3", + "version": "0.4.1", + "ecosystem": "npm" + } + } + ] + }, + { + "source": { + "path": "path/to/my/third/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.3.5", + "ecosystem": "npm" + } + }, + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + } + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": null + } + } +} + +--- + +[TestPrintJSONResults_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_some_vulnerabilities - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-1", + "summary": "Something scary!", + "severity": [ + { + "type": "high", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-1" + ], + "aliases": null, + "max_severity": "" + } + ] + } + ] + }, + { + "source": { + "path": "path/to/my/second/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine2", + "version": "3.2.5", + "ecosystem": "npm" + }, + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-2", + "summary": "Something less scary!", + "severity": [ + { + "type": "low", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-2" + ], + "aliases": null, + "max_severity": "" + } + ] + }, + { + "package": { + "name": "mine3", + "version": "0.4.1", + "ecosystem": "npm" + } + } + ] + }, + { + "source": { + "path": "path/to/my/third/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.3.5", + "ecosystem": "npm" + } + }, + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-1", + "summary": "Something scary!", + "severity": [ + { + "type": "high", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-1" + ], + "aliases": null, + "max_severity": "" + } + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": null + } + } +} + +--- + +[TestPrintJSONResults_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages_across_ecosystems,_and_multiple_vulnerabilities - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "Packagist" + }, + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-1", + "summary": "Something scary!", + "severity": [ + { + "type": "high", + "score": "1" + } + ] + }, + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-5", + "summary": "Something scarier!", + "severity": [ + { + "type": "extreme", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-1" + ], + "aliases": null, + "max_severity": "" + }, + { + "ids": [ + "OSV-5" + ], + "aliases": null, + "max_severity": "" + } + ] + }, + { + "package": { + "name": "mine1", + "version": "1.2.2", + "ecosystem": "npm" + }, + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-1", + "summary": "Something scary!", + "severity": [ + { + "type": "high", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-1" + ], + "aliases": null, + "max_severity": "" + } + ] + } + ] + }, + { + "source": { + "path": "path/to/my/second/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine2", + "version": "3.2.5", + "ecosystem": "NuGet" + }, + "dependency_groups": [ + "dev" + ], + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-2", + "summary": "Something less scary!", + "severity": [ + { + "type": "low", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-2" + ], + "aliases": null, + "max_severity": "" + } + ] + }, + { + "package": { + "name": "mine3", + "version": "0.4.1", + "ecosystem": "Packagist" + }, + "dependency_groups": [ + "build" + ], + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-3", + "summary": "Something mildly scary!", + "severity": [ + { + "type": "medium", + "score": "1" + } + ] + }, + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-5", + "summary": "Something scarier!", + "severity": [ + { + "type": "extreme", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-3" + ], + "aliases": null, + "max_severity": "" + }, + { + "ids": [ + "OSV-5" + ], + "aliases": null, + "max_severity": "" + } + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": null + } + } +} + +--- + +[TestPrintJSONResults_WithVulnerabilities/multiple_sources_with_no_packages - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [] + }, + { + "source": { + "path": "path/to/my/second/lockfile", + "type": "" + }, + "packages": [] + }, + { + "source": { + "path": "path/to/my/third/lockfile", + "type": "" + }, + "packages": [] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": null + } + } +} + +--- + +[TestPrintJSONResults_WithVulnerabilities/no_sources - 1] +{ + "results": [], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": null + } + } +} + +--- + +[TestPrintJSONResults_WithVulnerabilities/one_source_with_no_packages - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": null + } + } +} + +--- + +[TestPrintJSONResults_WithVulnerabilities/one_source_with_one_package,_no_vulnerabilities - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + } + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": null + } + } +} + +--- + +[TestPrintJSONResults_WithVulnerabilities/one_source_with_one_package_and_one_vulnerability - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-1", + "summary": "Something scary!", + "severity": [ + { + "type": "high", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-1" + ], + "aliases": null, + "max_severity": "" + } + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": null + } + } +} + +--- + +[TestPrintJSONResults_WithVulnerabilities/one_source_with_one_package_and_one_vulnerability_(dev) - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "dependency_groups": [ + "dev" + ], + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-1", + "summary": "Something scary!", + "severity": [ + { + "type": "high", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-1" + ], + "aliases": null, + "max_severity": "" + } + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": null + } + } +} + +--- + +[TestPrintJSONResults_WithVulnerabilities/one_source_with_one_package_and_two_aliases_of_a_single_vulnerability - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-1", + "summary": "Something scary!", + "severity": [ + { + "type": "high", + "score": "1" + } + ] + }, + { + "modified": "0001-01-01T00:00:00Z", + "id": "GHSA-123", + "aliases": [ + "OSV-1" + ], + "summary": "Something scary!", + "severity": [ + { + "type": "high", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-1", + "GHSA-123" + ], + "aliases": [ + "OSV-1", + "GHSA-123" + ], + "max_severity": "" + } + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": null + } + } +} + +--- + +[TestPrintJSONResults_WithVulnerabilities/one_source_with_vulnerabilities,_some_missing_content - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-1", + "details": "This vulnerability allows for some very scary stuff to happen - seriously, you'd not believe it!" + } + ], + "groups": [ + { + "ids": [ + "OSV-1" + ], + "aliases": null, + "max_severity": "" + } + ] + }, + { + "package": { + "name": "mine3", + "version": "0.10.2-rc", + "ecosystem": "npm" + }, + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-2" + } + ], + "groups": [ + { + "ids": [ + "OSV-2" + ], + "aliases": null, + "max_severity": "" + } + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": null + } + } +} + +--- + +[TestPrintJSONResults_WithVulnerabilities/two_sources_with_packages,_one_vulnerability - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-1", + "summary": "Something scary!", + "severity": [ + { + "type": "high", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-1" + ], + "aliases": null, + "max_severity": "" + } + ] + } + ] + }, + { + "source": { + "path": "path/to/my/second/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine2", + "version": "5.9.0", + "ecosystem": "npm" + } + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": null + } + } +} + +--- + +[TestPrintJSONResults_WithVulnerabilities/two_sources_with_the_same_vulnerable_package - 1] +{ + "results": [ + { + "source": { + "path": "path/to/my/first/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-1", + "summary": "Something scary!", + "severity": [ + { + "type": "high", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-1" + ], + "aliases": null, + "max_severity": "" + } + ] + } + ] + }, + { + "source": { + "path": "path/to/my/second/lockfile", + "type": "" + }, + "packages": [ + { + "package": { + "name": "mine1", + "version": "1.2.3", + "ecosystem": "npm" + }, + "dependency_groups": [ + "dev" + ], + "vulnerabilities": [ + { + "modified": "0001-01-01T00:00:00Z", + "id": "OSV-1", + "summary": "Something scary!", + "severity": [ + { + "type": "high", + "score": "1" + } + ] + } + ], + "groups": [ + { + "ids": [ + "OSV-1" + ], + "aliases": null, + "max_severity": "" + } + ] + } + ] + } + ], + "experimental_config": { + "licenses": { + "summary": false, + "allowlist": null + } + } +} + +--- diff --git a/internal/output/__snapshots__/markdowntable_test.snap b/internal/output/__snapshots__/markdowntable_test.snap new file mode 100755 index 00000000000..423fbb45fc0 --- /dev/null +++ b/internal/output/__snapshots__/markdowntable_test.snap @@ -0,0 +1,230 @@ + +[TestPrintMarkdownTableResults_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_no_license_violations - 1] + +--- + +[TestPrintMarkdownTableResults_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_some_license_violations - 1] +| License Violation | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | +| MIT | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | +| Apache-2.0 | npm | mine2 | 3.2.5 | path/to/my/second/lockfile | +| MIT | npm | mine1 | 1.2.3 | path/to/my/third/lockfile | + +--- + +[TestPrintMarkdownTableResults_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_some_license_violations#01 - 1] + +--- + +[TestPrintMarkdownTableResults_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages_across_ecosystems,_some_license_violations - 1] +| License Violation | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | +| MIT | Packagist | mine1 | 1.2.3 | path/to/my/first/lockfile | +| Apache-2.0 | npm | mine2 | 3.2.5 | path/to/my/second/lockfile | +| MIT | Packagist | mine1 | 1.2.3 | path/to/my/third/lockfile | + +--- + +[TestPrintMarkdownTableResults_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages_and_groups,_some_license_violations - 1] +| License Violation | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | +| MIT | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | +| Apache-2.0 | npm | mine2 | 3.2.5 | path/to/my/second/lockfile | +| MIT | npm | mine1 | 1.2.3 | path/to/my/third/lockfile | + +--- + +[TestPrintMarkdownTableResults_WithLicenseViolations/multiple_sources_with_no_packages - 1] + +--- + +[TestPrintMarkdownTableResults_WithLicenseViolations/no_sources - 1] + +--- + +[TestPrintMarkdownTableResults_WithLicenseViolations/one_source_with_no_packages - 1] + +--- + +[TestPrintMarkdownTableResults_WithLicenseViolations/one_source_with_one_package,_no_license_violations - 1] + +--- + +[TestPrintMarkdownTableResults_WithLicenseViolations/one_source_with_one_package,_no_licenses - 1] + +--- + +[TestPrintMarkdownTableResults_WithLicenseViolations/one_source_with_one_package_and_an_unknown_license - 1] + +--- + +[TestPrintMarkdownTableResults_WithLicenseViolations/one_source_with_one_package_and_multiple_license_violations - 1] +| License Violation | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | +| MIT, Apache-2.0 | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | + +--- + +[TestPrintMarkdownTableResults_WithLicenseViolations/one_source_with_one_package_and_one_license_violation - 1] +| License Violation | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | +| MIT | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | + +--- + +[TestPrintMarkdownTableResults_WithLicenseViolations/one_source_with_one_package_and_one_license_violation_(dev) - 1] +| License Violation | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | +| MIT | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | + +--- + +[TestPrintMarkdownTableResults_WithLicenseViolations/two_sources_with_packages,_one_license_violation - 1] +| License Violation | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | +| MIT | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | + +--- + +[TestPrintMarkdownTableResults_WithMixedIssues/multiple_sources_with_a_mixed_count_of_packages,_some_vulnerabilities_and_license_violations - 1] +| OSV URL | CVSS | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | --- | +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | +| https://osv.dev/OSV-2 | | npm | mine2 | 3.2.5 | path/to/my/second/lockfile | +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/third/lockfile | +| License Violation | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | +| MIT | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | +| MIT | npm | mine1 | 1.3.5 | path/to/my/third/lockfile | +| Apache-2.0 | npm | mine1 | 1.2.3 | path/to/my/third/lockfile | + +--- + +[TestPrintMarkdownTableResults_WithMixedIssues/one_source_with_one_package,_one_vulnerability,_and_one_license_violation - 1] +| OSV URL | CVSS | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | --- | +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | +| License Violation | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | +| MIT | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | + +--- + +[TestPrintMarkdownTableResults_WithMixedIssues/two_sources_with_packages,_one_vulnerability,_one_license_violation - 1] +| OSV URL | CVSS | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | --- | +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | +| License Violation | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | +| MIT | npm | mine2 | 5.9.0 | path/to/my/second/lockfile | + +--- + +[TestPrintMarkdownTableResults_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_grouped_packages,_and_multiple_vulnerabilities - 1] +| OSV URL | CVSS | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | --- | +| https://osv.dev/OSV-1 | | npm | mine1 (dev) | 1.2.3 | path/to/my/first/lockfile | +| https://osv.dev/OSV-5 | | npm | mine1 (dev) | 1.2.3 | path/to/my/first/lockfile | +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.2 | path/to/my/first/lockfile | +| https://osv.dev/OSV-2 | | npm | mine2 (dev) | 3.2.5 | path/to/my/second/lockfile | +| https://osv.dev/OSV-3 | | npm | mine3 | 0.4.1 | path/to/my/second/lockfile | +| https://osv.dev/OSV-5 | | npm | mine3 | 0.4.1 | path/to/my/second/lockfile | + +--- + +[TestPrintMarkdownTableResults_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_and_multiple_vulnerabilities - 1] +| OSV URL | CVSS | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | --- | +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | +| https://osv.dev/OSV-5 | | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.2 | path/to/my/first/lockfile | +| https://osv.dev/OSV-2 | | npm | mine2 | 3.2.5 | path/to/my/second/lockfile | +| https://osv.dev/OSV-3 | | npm | mine3 | 0.4.1 | path/to/my/second/lockfile | +| https://osv.dev/OSV-5 | | npm | mine3 | 0.4.1 | path/to/my/second/lockfile | + +--- + +[TestPrintMarkdownTableResults_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_no_vulnerabilities - 1] + +--- + +[TestPrintMarkdownTableResults_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_some_vulnerabilities - 1] +| OSV URL | CVSS | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | --- | +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | +| https://osv.dev/OSV-2 | | npm | mine2 | 3.2.5 | path/to/my/second/lockfile | +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/third/lockfile | + +--- + +[TestPrintMarkdownTableResults_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages_across_ecosystems,_and_multiple_vulnerabilities - 1] +| OSV URL | CVSS | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | --- | +| https://osv.dev/OSV-1 | | Packagist | mine1 | 1.2.3 | path/to/my/first/lockfile | +| https://osv.dev/OSV-5 | | Packagist | mine1 | 1.2.3 | path/to/my/first/lockfile | +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.2 | path/to/my/first/lockfile | +| https://osv.dev/OSV-2 | | NuGet | mine2 | 3.2.5 | path/to/my/second/lockfile | +| https://osv.dev/OSV-3 | | Packagist | mine3 | 0.4.1 | path/to/my/second/lockfile | +| https://osv.dev/OSV-5 | | Packagist | mine3 | 0.4.1 | path/to/my/second/lockfile | + +--- + +[TestPrintMarkdownTableResults_WithVulnerabilities/multiple_sources_with_no_packages - 1] + +--- + +[TestPrintMarkdownTableResults_WithVulnerabilities/no_sources - 1] + +--- + +[TestPrintMarkdownTableResults_WithVulnerabilities/one_source_with_no_packages - 1] + +--- + +[TestPrintMarkdownTableResults_WithVulnerabilities/one_source_with_one_package,_no_vulnerabilities - 1] + +--- + +[TestPrintMarkdownTableResults_WithVulnerabilities/one_source_with_one_package_and_one_vulnerability - 1] +| OSV URL | CVSS | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | --- | +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | + +--- + +[TestPrintMarkdownTableResults_WithVulnerabilities/one_source_with_one_package_and_one_vulnerability_(dev) - 1] +| OSV URL | CVSS | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | --- | +| https://osv.dev/OSV-1 | | npm | mine1 (dev) | 1.2.3 | path/to/my/first/lockfile | + +--- + +[TestPrintMarkdownTableResults_WithVulnerabilities/one_source_with_one_package_and_two_aliases_of_a_single_vulnerability - 1] +| OSV URL | CVSS | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | --- | +| https://osv.dev/OSV-1
https://osv.dev/GHSA-123 | | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | + +--- + +[TestPrintMarkdownTableResults_WithVulnerabilities/one_source_with_vulnerabilities,_some_missing_content - 1] +| OSV URL | CVSS | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | --- | +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | +| https://osv.dev/OSV-2 | | npm | mine3 | 0.10.2-rc | path/to/my/first/lockfile | + +--- + +[TestPrintMarkdownTableResults_WithVulnerabilities/two_sources_with_packages,_one_vulnerability - 1] +| OSV URL | CVSS | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | --- | +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | + +--- + +[TestPrintMarkdownTableResults_WithVulnerabilities/two_sources_with_the_same_vulnerable_package - 1] +| OSV URL | CVSS | Ecosystem | Package | Version | Source | +| --- | --- | --- | --- | --- | --- | +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | +| https://osv.dev/OSV-1 | | npm | mine1 (dev) | 1.2.3 | path/to/my/second/lockfile | + +--- diff --git a/internal/output/__snapshots__/sarif_test.snap b/internal/output/__snapshots__/sarif_test.snap index 4d0023be11a..82dc2e44ff3 100755 --- a/internal/output/__snapshots__/sarif_test.snap +++ b/internal/output/__snapshots__/sarif_test.snap @@ -137,3 +137,1920 @@ } --- + +[TestPrintSARIFReport_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_no_license_violations - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_some_license_violations - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_some_license_violations#01 - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages_across_ecosystems,_some_license_violations - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages_and_groups,_some_license_violations - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithLicenseViolations/multiple_sources_with_no_packages - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithLicenseViolations/no_sources - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithLicenseViolations/one_source_with_no_packages - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithLicenseViolations/one_source_with_one_package,_no_license_violations - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithLicenseViolations/one_source_with_one_package,_no_licenses - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithLicenseViolations/one_source_with_one_package_and_an_unknown_license - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithLicenseViolations/one_source_with_one_package_and_multiple_license_violations - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithLicenseViolations/one_source_with_one_package_and_one_license_violation - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithLicenseViolations/one_source_with_one_package_and_one_license_violation_(dev) - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithLicenseViolations/two_sources_with_packages,_one_license_violation - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithMixedIssues/multiple_sources_with_a_mixed_count_of_packages,_some_vulnerabilities_and_license_violations - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [ + { + "id": "OSV-1", + "name": "OSV-1", + "shortDescription": { + "text": "OSV-1: Something scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-1" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/third/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/third/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/third/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/third/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + }, + { + "id": "OSV-2", + "name": "OSV-2", + "shortDescription": { + "text": "OSV-2: Something less scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-2" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine2 | 3.2.5 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine2 | 3.2.5 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + } + ], + "version": "1.7.2" + } + }, + "artifacts": [ + { + "location": { + "uri": "path/to/my/first/lockfile" + }, + "length": -1 + }, + { + "location": { + "uri": "path/to/my/third/lockfile" + }, + "length": -1 + }, + { + "location": { + "uri": "path/to/my/second/lockfile" + }, + "length": -1 + } + ], + "results": [ + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/third/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-2", + "ruleIndex": 1, + "level": "warning", + "message": { + "text": "Package 'mine2@3.2.5' is vulnerable to 'OSV-2'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/second/lockfile" + } + } + } + ] + } + ] + } + ] +} + +--- + +[TestPrintSARIFReport_WithMixedIssues/one_source_with_one_package,_one_vulnerability,_and_one_license_violation - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [ + { + "id": "OSV-1", + "name": "OSV-1", + "shortDescription": { + "text": "OSV-1: Something scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-1" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + } + ], + "version": "1.7.2" + } + }, + "artifacts": [ + { + "location": { + "uri": "path/to/my/first/lockfile" + }, + "length": -1 + } + ], + "results": [ + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + } + ] + } + ] +} + +--- + +[TestPrintSARIFReport_WithMixedIssues/two_sources_with_packages,_one_vulnerability,_one_license_violation - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [ + { + "id": "OSV-1", + "name": "OSV-1", + "shortDescription": { + "text": "OSV-1: Something scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-1" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + } + ], + "version": "1.7.2" + } + }, + "artifacts": [ + { + "location": { + "uri": "path/to/my/first/lockfile" + }, + "length": -1 + } + ], + "results": [ + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + } + ] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_grouped_packages,_and_multiple_vulnerabilities - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [ + { + "id": "OSV-1", + "name": "OSV-1", + "shortDescription": { + "text": "OSV-1: Something scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-1" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.2 |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.2 |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + }, + { + "id": "OSV-2", + "name": "OSV-2", + "shortDescription": { + "text": "OSV-2: Something less scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-2" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine2 | 3.2.5 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine2 | 3.2.5 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + }, + { + "id": "OSV-3", + "name": "OSV-3", + "shortDescription": { + "text": "OSV-3: Something mildly scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-3" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-3](https://osv.dev/list?q=OSV-3)**.\n\n## [OSV-3](https://osv.dev/vulnerability/OSV-3)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine3 | 0.4.1 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-3\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-3](https://osv.dev/list?q=OSV-3)**.\n\n## [OSV-3](https://osv.dev/vulnerability/OSV-3)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine3 | 0.4.1 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-3\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + }, + { + "id": "OSV-5", + "name": "OSV-5", + "shortDescription": { + "text": "OSV-5: Something scarier!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-5" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-5](https://osv.dev/list?q=OSV-5)**.\n\n## [OSV-5](https://osv.dev/vulnerability/OSV-5)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/second/lockfile | mine3 | 0.4.1 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-5\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-5\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-5](https://osv.dev/list?q=OSV-5)**.\n\n## [OSV-5](https://osv.dev/vulnerability/OSV-5)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/second/lockfile | mine3 | 0.4.1 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-5\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-5\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + } + ], + "version": "1.7.2" + } + }, + "artifacts": [ + { + "location": { + "uri": "path/to/my/first/lockfile" + }, + "length": -1 + }, + { + "location": { + "uri": "path/to/my/second/lockfile" + }, + "length": -1 + } + ], + "results": [ + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.2' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-2", + "ruleIndex": 1, + "level": "warning", + "message": { + "text": "Package 'mine2@3.2.5' is vulnerable to 'OSV-2'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/second/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-3", + "ruleIndex": 2, + "level": "warning", + "message": { + "text": "Package 'mine3@0.4.1' is vulnerable to 'OSV-3'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/second/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-5", + "ruleIndex": 3, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-5'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-5", + "ruleIndex": 3, + "level": "warning", + "message": { + "text": "Package 'mine3@0.4.1' is vulnerable to 'OSV-5'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/second/lockfile" + } + } + } + ] + } + ] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_and_multiple_vulnerabilities - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [ + { + "id": "OSV-1", + "name": "OSV-1", + "shortDescription": { + "text": "OSV-1: Something scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-1" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.2 |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.2 |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + }, + { + "id": "OSV-2", + "name": "OSV-2", + "shortDescription": { + "text": "OSV-2: Something less scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-2" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine2 | 3.2.5 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine2 | 3.2.5 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + }, + { + "id": "OSV-3", + "name": "OSV-3", + "shortDescription": { + "text": "OSV-3: Something mildly scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-3" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-3](https://osv.dev/list?q=OSV-3)**.\n\n## [OSV-3](https://osv.dev/vulnerability/OSV-3)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine3 | 0.4.1 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-3\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-3](https://osv.dev/list?q=OSV-3)**.\n\n## [OSV-3](https://osv.dev/vulnerability/OSV-3)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine3 | 0.4.1 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-3\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + }, + { + "id": "OSV-5", + "name": "OSV-5", + "shortDescription": { + "text": "OSV-5: Something scarier!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-5" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-5](https://osv.dev/list?q=OSV-5)**.\n\n## [OSV-5](https://osv.dev/vulnerability/OSV-5)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/second/lockfile | mine3 | 0.4.1 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-5\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-5\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-5](https://osv.dev/list?q=OSV-5)**.\n\n## [OSV-5](https://osv.dev/vulnerability/OSV-5)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/second/lockfile | mine3 | 0.4.1 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-5\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-5\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + } + ], + "version": "1.7.2" + } + }, + "artifacts": [ + { + "location": { + "uri": "path/to/my/first/lockfile" + }, + "length": -1 + }, + { + "location": { + "uri": "path/to/my/second/lockfile" + }, + "length": -1 + } + ], + "results": [ + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.2' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-2", + "ruleIndex": 1, + "level": "warning", + "message": { + "text": "Package 'mine2@3.2.5' is vulnerable to 'OSV-2'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/second/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-3", + "ruleIndex": 2, + "level": "warning", + "message": { + "text": "Package 'mine3@0.4.1' is vulnerable to 'OSV-3'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/second/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-5", + "ruleIndex": 3, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-5'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-5", + "ruleIndex": 3, + "level": "warning", + "message": { + "text": "Package 'mine3@0.4.1' is vulnerable to 'OSV-5'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/second/lockfile" + } + } + } + ] + } + ] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_no_vulnerabilities - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_some_vulnerabilities - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [ + { + "id": "OSV-1", + "name": "OSV-1", + "shortDescription": { + "text": "OSV-1: Something scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-1" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/third/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/third/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/third/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/third/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + }, + { + "id": "OSV-2", + "name": "OSV-2", + "shortDescription": { + "text": "OSV-2: Something less scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-2" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine2 | 3.2.5 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine2 | 3.2.5 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + } + ], + "version": "1.7.2" + } + }, + "artifacts": [ + { + "location": { + "uri": "path/to/my/first/lockfile" + }, + "length": -1 + }, + { + "location": { + "uri": "path/to/my/third/lockfile" + }, + "length": -1 + }, + { + "location": { + "uri": "path/to/my/second/lockfile" + }, + "length": -1 + } + ], + "results": [ + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/third/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-2", + "ruleIndex": 1, + "level": "warning", + "message": { + "text": "Package 'mine2@3.2.5' is vulnerable to 'OSV-2'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/second/lockfile" + } + } + } + ] + } + ] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages_across_ecosystems,_and_multiple_vulnerabilities - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [ + { + "id": "OSV-1", + "name": "OSV-1", + "shortDescription": { + "text": "OSV-1: Something scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-1" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.2 |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.2 |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + }, + { + "id": "OSV-2", + "name": "OSV-2", + "shortDescription": { + "text": "OSV-2: Something less scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-2" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine2 | 3.2.5 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine2 | 3.2.5 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + }, + { + "id": "OSV-3", + "name": "OSV-3", + "shortDescription": { + "text": "OSV-3: Something mildly scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-3" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-3](https://osv.dev/list?q=OSV-3)**.\n\n## [OSV-3](https://osv.dev/vulnerability/OSV-3)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine3 | 0.4.1 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-3\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-3](https://osv.dev/list?q=OSV-3)**.\n\n## [OSV-3](https://osv.dev/vulnerability/OSV-3)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/second/lockfile | mine3 | 0.4.1 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-3\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + }, + { + "id": "OSV-5", + "name": "OSV-5", + "shortDescription": { + "text": "OSV-5: Something scarier!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-5" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-5](https://osv.dev/list?q=OSV-5)**.\n\n## [OSV-5](https://osv.dev/vulnerability/OSV-5)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/second/lockfile | mine3 | 0.4.1 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-5\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-5\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-5](https://osv.dev/list?q=OSV-5)**.\n\n## [OSV-5](https://osv.dev/vulnerability/OSV-5)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/second/lockfile | mine3 | 0.4.1 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-5\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-5\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + } + ], + "version": "1.7.2" + } + }, + "artifacts": [ + { + "location": { + "uri": "path/to/my/first/lockfile" + }, + "length": -1 + }, + { + "location": { + "uri": "path/to/my/second/lockfile" + }, + "length": -1 + } + ], + "results": [ + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.2' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-2", + "ruleIndex": 1, + "level": "warning", + "message": { + "text": "Package 'mine2@3.2.5' is vulnerable to 'OSV-2'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/second/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-3", + "ruleIndex": 2, + "level": "warning", + "message": { + "text": "Package 'mine3@0.4.1' is vulnerable to 'OSV-3'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/second/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-5", + "ruleIndex": 3, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-5'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-5", + "ruleIndex": 3, + "level": "warning", + "message": { + "text": "Package 'mine3@0.4.1' is vulnerable to 'OSV-5'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/second/lockfile" + } + } + } + ] + } + ] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/multiple_sources_with_no_packages - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/no_sources - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/one_source_with_no_packages - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/one_source_with_one_package,_no_vulnerabilities - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [], + "version": "1.7.2" + } + }, + "results": [] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/one_source_with_one_package_and_one_vulnerability - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [ + { + "id": "OSV-1", + "name": "OSV-1", + "shortDescription": { + "text": "OSV-1: Something scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-1" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + } + ], + "version": "1.7.2" + } + }, + "artifacts": [ + { + "location": { + "uri": "path/to/my/first/lockfile" + }, + "length": -1 + } + ], + "results": [ + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + } + ] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/one_source_with_one_package_and_one_vulnerability_(dev) - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [ + { + "id": "OSV-1", + "name": "OSV-1", + "shortDescription": { + "text": "OSV-1: Something scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-1" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + } + ], + "version": "1.7.2" + } + }, + "artifacts": [ + { + "location": { + "uri": "path/to/my/first/lockfile" + }, + "length": -1 + } + ], + "results": [ + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + } + ] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/one_source_with_one_package_and_two_aliases_of_a_single_vulnerability - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [ + { + "id": "OSV-1", + "name": "OSV-1", + "shortDescription": { + "text": "OSV-1: Something scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-1", + "GHSA-123" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**\n(Also published as: [GHSA-123](https://osv.dev/vulnerability/GHSA-123), ).\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n## [GHSA-123](https://osv.dev/vulnerability/GHSA-123)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**\n(Also published as: [GHSA-123](https://osv.dev/vulnerability/GHSA-123), ).\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n## [GHSA-123](https://osv.dev/vulnerability/GHSA-123)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + } + ], + "version": "1.7.2" + } + }, + "artifacts": [ + { + "location": { + "uri": "path/to/my/first/lockfile" + }, + "length": -1 + } + ], + "results": [ + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1' (also known as 'GHSA-123')." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1' (also known as 'GHSA-123')." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + } + ] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/one_source_with_vulnerabilities,_some_missing_content - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [ + { + "id": "OSV-1", + "name": "OSV-1", + "shortDescription": { + "text": "OSV-1" + }, + "fullDescription": { + "text": "This vulnerability allows for some very scary stuff to happen - seriously, you'd not believe it!", + "markdown": "This vulnerability allows for some very scary stuff to happen - seriously, you'd not believe it!" + }, + "deprecatedIds": [ + "OSV-1" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e This vulnerability allows for some very scary stuff to happen - seriously, you'd not believe it!\n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e This vulnerability allows for some very scary stuff to happen - seriously, you'd not believe it!\n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + }, + { + "id": "OSV-2", + "name": "OSV-2", + "shortDescription": { + "text": "OSV-2" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-2" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine3 | 0.10.2-rc |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-2](https://osv.dev/list?q=OSV-2)**.\n\n## [OSV-2](https://osv.dev/vulnerability/OSV-2)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine3 | 0.10.2-rc |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-2\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + } + ], + "version": "1.7.2" + } + }, + "artifacts": [ + { + "location": { + "uri": "path/to/my/first/lockfile" + }, + "length": -1 + } + ], + "results": [ + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-2", + "ruleIndex": 1, + "level": "warning", + "message": { + "text": "Package 'mine3@0.10.2-rc' is vulnerable to 'OSV-2'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + } + ] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/two_sources_with_packages,_one_vulnerability - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [ + { + "id": "OSV-1", + "name": "OSV-1", + "shortDescription": { + "text": "OSV-1: Something scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-1" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + } + ], + "version": "1.7.2" + } + }, + "artifacts": [ + { + "location": { + "uri": "path/to/my/first/lockfile" + }, + "length": -1 + } + ], + "results": [ + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + } + ] + } + ] +} + +--- + +[TestPrintSARIFReport_WithVulnerabilities/two_sources_with_the_same_vulnerable_package - 1] +{ + "version": "2.1.0", + "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", + "runs": [ + { + "tool": { + "driver": { + "informationUri": "https://github.com/google/osv-scanner", + "name": "osv-scanner", + "rules": [ + { + "id": "OSV-1", + "name": "OSV-1", + "shortDescription": { + "text": "OSV-1: Something scary!" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "deprecatedIds": [ + "OSV-1" + ], + "help": { + "text": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/second/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n", + "markdown": "**Your dependency is vulnerable to [OSV-1](https://osv.dev/list?q=OSV-1)**.\n\n## [OSV-1](https://osv.dev/vulnerability/OSV-1)\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails\u003c/summary\u003e\n\n\u003e \n\n\u003c/details\u003e\n\n---\n\n### Affected Packages\n\n| Source | Package Name | Package Version |\n| --- | --- | --- |\n| :path/to/my/first/lockfile | mine1 | 1.2.3 |\n| :path/to/my/second/lockfile | mine1 | 1.2.3 |\n\n## Remediation\n\nIf you believe these vulnerabilities do not affect your code and wish to ignore them, add them to the ignore list in an\n`osv-scanner.toml` file located in the same directory as the lockfile containing the vulnerable dependency.\n\nSee the format and more options in our documentation here: https://google.github.io/osv-scanner/configuration/\n\nAdd or append these values to the following config files to ignore this vulnerability:\n\n`path/to/my/first/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n`path/to/my/second/osv-scanner.toml`\n\n```\n[[IgnoredVulns]]\nid = \"OSV-1\"\nreason = \"Your reason for ignoring this vulnerability\"\n```\n" + } + } + ], + "version": "1.7.2" + } + }, + "artifacts": [ + { + "location": { + "uri": "path/to/my/first/lockfile" + }, + "length": -1 + }, + { + "location": { + "uri": "path/to/my/second/lockfile" + }, + "length": -1 + } + ], + "results": [ + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/first/lockfile" + } + } + } + ] + }, + { + "ruleId": "OSV-1", + "ruleIndex": 0, + "level": "warning", + "message": { + "text": "Package 'mine1@1.2.3' is vulnerable to 'OSV-1'." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "path/to/my/second/lockfile" + } + } + } + ] + } + ] + } + ] +} + +--- diff --git a/internal/output/__snapshots__/table_test.snap b/internal/output/__snapshots__/table_test.snap new file mode 100755 index 00000000000..cc77791a0c2 --- /dev/null +++ b/internal/output/__snapshots__/table_test.snap @@ -0,0 +1,831 @@ + +[TestPrintTableResults_LongTerminalWidth_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_no_license_violations - 1] + +--- + +[TestPrintTableResults_LongTerminalWidth_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_some_license_violations - 1] +╭───────────────────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ────────────────────────────╮ +│ LICENSE VIOLATION │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├───────────────────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ────────────────────────────┤ +│ MIT │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfile │ +│ Apache-2.0 │ npm │ mine2 │ 3.2.5 │ path/to/my/second/lockfile │ +│ MIT │ npm │ mine1 │ 1.2.3 │ path/to/my/third/lockfile │ +╰───────────────────┴───────────┴─────────┴─────────┴────────────────────────────╯ + +--- + +[TestPrintTableResults_LongTerminalWidth_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_some_license_violations#01 - 1] + +--- + +[TestPrintTableResults_LongTerminalWidth_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages_across_ecosystems,_some_license_violations - 1] +╭───────────────────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ────────────────────────────╮ +│ LICENSE VIOLATION │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├───────────────────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ────────────────────────────┤ +│ MIT │ Packagist │ mine1 │ 1.2.3 │ path/to/my/first/lockfile │ +│ Apache-2.0 │ npm │ mine2 │ 3.2.5 │ path/to/my/second/lockfile │ +│ MIT │ Packagist │ mine1 │ 1.2.3 │ path/to/my/third/lockfile │ +╰───────────────────┴───────────┴─────────┴─────────┴────────────────────────────╯ + +--- + +[TestPrintTableResults_LongTerminalWidth_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages_and_groups,_some_license_violations - 1] +╭───────────────────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ────────────────────────────╮ +│ LICENSE VIOLATION │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├───────────────────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ────────────────────────────┤ +│ MIT │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfile │ +│ Apache-2.0 │ npm │ mine2 │ 3.2.5 │ path/to/my/second/lockfile │ +│ MIT │ npm │ mine1 │ 1.2.3 │ path/to/my/third/lockfile │ +╰───────────────────┴───────────┴─────────┴─────────┴────────────────────────────╯ + +--- + +[TestPrintTableResults_LongTerminalWidth_WithLicenseViolations/multiple_sources_with_no_packages - 1] + +--- + +[TestPrintTableResults_LongTerminalWidth_WithLicenseViolations/no_sources - 1] + +--- + +[TestPrintTableResults_LongTerminalWidth_WithLicenseViolations/one_source_with_no_packages - 1] + +--- + +[TestPrintTableResults_LongTerminalWidth_WithLicenseViolations/one_source_with_one_package,_no_license_violations - 1] + +--- + +[TestPrintTableResults_LongTerminalWidth_WithLicenseViolations/one_source_with_one_package,_no_licenses - 1] + +--- + +[TestPrintTableResults_LongTerminalWidth_WithLicenseViolations/one_source_with_one_package_and_an_unknown_license - 1] + +--- + +[TestPrintTableResults_LongTerminalWidth_WithLicenseViolations/one_source_with_one_package_and_multiple_license_violations - 1] +╭───────────────────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ───────────────────────────╮ +│ LICENSE VIOLATION │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├───────────────────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ───────────────────────────┤ +│ MIT, Apache-2.0 │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfile │ +╰───────────────────┴───────────┴─────────┴─────────┴───────────────────────────╯ + +--- + +[TestPrintTableResults_LongTerminalWidth_WithLicenseViolations/one_source_with_one_package_and_one_license_violation - 1] +╭───────────────────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ───────────────────────────╮ +│ LICENSE VIOLATION │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├───────────────────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ───────────────────────────┤ +│ MIT │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfile │ +╰───────────────────┴───────────┴─────────┴─────────┴───────────────────────────╯ + +--- + +[TestPrintTableResults_LongTerminalWidth_WithLicenseViolations/one_source_with_one_package_and_one_license_violation_(dev) - 1] +╭───────────────────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ───────────────────────────╮ +│ LICENSE VIOLATION │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├───────────────────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ───────────────────────────┤ +│ MIT │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfile │ +╰───────────────────┴───────────┴─────────┴─────────┴───────────────────────────╯ + +--- + +[TestPrintTableResults_LongTerminalWidth_WithLicenseViolations/two_sources_with_packages,_one_license_violation - 1] +╭───────────────────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ───────────────────────────╮ +│ LICENSE VIOLATION │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├───────────────────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ───────────────────────────┤ +│ MIT │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfile │ +╰───────────────────┴───────────┴─────────┴─────────┴───────────────────────────╯ + +--- + +[TestPrintTableResults_LongTerminalWidth_WithMixedIssues/multiple_sources_with_a_mixed_count_of_packages,_some_vulnerabilities_and_license_violations - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ────────────────────────────╮ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ────────────────────────────┤ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfile │ +│ https://osv.dev/OSV-2 │ │ npm │ mine2 │ 3.2.5 │ path/to/my/second/lockfile │ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/third/lockfile │ +╰───────────────────────┴──────┴───────────┴─────────┴─────────┴────────────────────────────╯ +╭───────────────────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ───────────────────────────╮ +│ LICENSE VIOLATION │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├───────────────────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ───────────────────────────┤ +│ MIT │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfile │ +│ MIT │ npm │ mine1 │ 1.3.5 │ path/to/my/third/lockfile │ +│ Apache-2.0 │ npm │ mine1 │ 1.2.3 │ path/to/my/third/lockfile │ +╰───────────────────┴───────────┴─────────┴─────────┴───────────────────────────╯ + +--- + +[TestPrintTableResults_LongTerminalWidth_WithMixedIssues/one_source_with_one_package,_one_vulnerability,_and_one_license_violation - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ───────────────────────────╮ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ───────────────────────────┤ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfile │ +╰───────────────────────┴──────┴───────────┴─────────┴─────────┴───────────────────────────╯ +╭───────────────────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ───────────────────────────╮ +│ LICENSE VIOLATION │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├───────────────────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ───────────────────────────┤ +│ MIT │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfile │ +╰───────────────────┴───────────┴─────────┴─────────┴───────────────────────────╯ + +--- + +[TestPrintTableResults_LongTerminalWidth_WithMixedIssues/two_sources_with_packages,_one_vulnerability,_one_license_violation - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ───────────────────────────╮ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ───────────────────────────┤ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfile │ +╰───────────────────────┴──────┴───────────┴─────────┴─────────┴───────────────────────────╯ +╭───────────────────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ────────────────────────────╮ +│ LICENSE VIOLATION │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├───────────────────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ────────────────────────────┤ +│ MIT │ npm │ mine2 │ 5.9.0 │ path/to/my/second/lockfile │ +╰───────────────────┴───────────┴─────────┴─────────┴────────────────────────────╯ + +--- + +[TestPrintTableResults_LongTerminalWidth_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_grouped_packages,_and_multiple_vulnerabilities - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────────â”Ŧ─────────â”Ŧ────────────────────────────╮ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────────â”ŧ─────────â”ŧ────────────────────────────┤ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 (dev) │ 1.2.3 │ path/to/my/first/lockfile │ +│ https://osv.dev/OSV-5 │ │ npm │ mine1 (dev) │ 1.2.3 │ path/to/my/first/lockfile │ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.2 │ path/to/my/first/lockfile │ +│ https://osv.dev/OSV-2 │ │ npm │ mine2 (dev) │ 3.2.5 │ path/to/my/second/lockfile │ +│ https://osv.dev/OSV-3 │ │ npm │ mine3 │ 0.4.1 │ path/to/my/second/lockfile │ +│ https://osv.dev/OSV-5 │ │ npm │ mine3 │ 0.4.1 │ path/to/my/second/lockfile │ +╰───────────────────────┴──────┴───────────┴─────────────┴─────────┴────────────────────────────╯ + +--- + +[TestPrintTableResults_LongTerminalWidth_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_and_multiple_vulnerabilities - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ────────────────────────────╮ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ────────────────────────────┤ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfile │ +│ https://osv.dev/OSV-5 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfile │ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.2 │ path/to/my/first/lockfile │ +│ https://osv.dev/OSV-2 │ │ npm │ mine2 │ 3.2.5 │ path/to/my/second/lockfile │ +│ https://osv.dev/OSV-3 │ │ npm │ mine3 │ 0.4.1 │ path/to/my/second/lockfile │ +│ https://osv.dev/OSV-5 │ │ npm │ mine3 │ 0.4.1 │ path/to/my/second/lockfile │ +╰───────────────────────┴──────┴───────────┴─────────┴─────────┴────────────────────────────╯ + +--- + +[TestPrintTableResults_LongTerminalWidth_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_no_vulnerabilities - 1] + +--- + +[TestPrintTableResults_LongTerminalWidth_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_some_vulnerabilities - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ────────────────────────────╮ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ────────────────────────────┤ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfile │ +│ https://osv.dev/OSV-2 │ │ npm │ mine2 │ 3.2.5 │ path/to/my/second/lockfile │ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/third/lockfile │ +╰───────────────────────┴──────┴───────────┴─────────┴─────────┴────────────────────────────╯ + +--- + +[TestPrintTableResults_LongTerminalWidth_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages_across_ecosystems,_and_multiple_vulnerabilities - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ────────────────────────────╮ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ────────────────────────────┤ +│ https://osv.dev/OSV-1 │ │ Packagist │ mine1 │ 1.2.3 │ path/to/my/first/lockfile │ +│ https://osv.dev/OSV-5 │ │ Packagist │ mine1 │ 1.2.3 │ path/to/my/first/lockfile │ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.2 │ path/to/my/first/lockfile │ +│ https://osv.dev/OSV-2 │ │ NuGet │ mine2 │ 3.2.5 │ path/to/my/second/lockfile │ +│ https://osv.dev/OSV-3 │ │ Packagist │ mine3 │ 0.4.1 │ path/to/my/second/lockfile │ +│ https://osv.dev/OSV-5 │ │ Packagist │ mine3 │ 0.4.1 │ path/to/my/second/lockfile │ +╰───────────────────────┴──────┴───────────┴─────────┴─────────┴────────────────────────────╯ + +--- + +[TestPrintTableResults_LongTerminalWidth_WithVulnerabilities/multiple_sources_with_no_packages - 1] + +--- + +[TestPrintTableResults_LongTerminalWidth_WithVulnerabilities/no_sources - 1] + +--- + +[TestPrintTableResults_LongTerminalWidth_WithVulnerabilities/one_source_with_no_packages - 1] + +--- + +[TestPrintTableResults_LongTerminalWidth_WithVulnerabilities/one_source_with_one_package,_no_vulnerabilities - 1] + +--- + +[TestPrintTableResults_LongTerminalWidth_WithVulnerabilities/one_source_with_one_package_and_one_vulnerability - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ───────────────────────────╮ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ───────────────────────────┤ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfile │ +╰───────────────────────┴──────┴───────────┴─────────┴─────────┴───────────────────────────╯ + +--- + +[TestPrintTableResults_LongTerminalWidth_WithVulnerabilities/one_source_with_one_package_and_one_vulnerability_(dev) - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────────â”Ŧ─────────â”Ŧ───────────────────────────╮ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────────â”ŧ─────────â”ŧ───────────────────────────┤ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 (dev) │ 1.2.3 │ path/to/my/first/lockfile │ +╰───────────────────────┴──────┴───────────┴─────────────┴─────────┴───────────────────────────╯ + +--- + +[TestPrintTableResults_LongTerminalWidth_WithVulnerabilities/one_source_with_one_package_and_two_aliases_of_a_single_vulnerability - 1] +╭──────────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ───────────────────────────╮ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├──────────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ───────────────────────────┤ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfile │ +│ https://osv.dev/GHSA-123 │ │ │ │ │ │ +╰──────────────────────────┴──────┴───────────┴─────────┴─────────┴───────────────────────────╯ + +--- + +[TestPrintTableResults_LongTerminalWidth_WithVulnerabilities/one_source_with_vulnerabilities,_some_missing_content - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────â”Ŧ───────────â”Ŧ───────────────────────────╮ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────â”ŧ───────────â”ŧ───────────────────────────┤ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfile │ +│ https://osv.dev/OSV-2 │ │ npm │ mine3 │ 0.10.2-rc │ path/to/my/first/lockfile │ +╰───────────────────────┴──────┴───────────┴─────────┴───────────┴───────────────────────────╯ + +--- + +[TestPrintTableResults_LongTerminalWidth_WithVulnerabilities/two_sources_with_packages,_one_vulnerability - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ───────────────────────────╮ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ───────────────────────────┤ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfile │ +╰───────────────────────┴──────┴───────────┴─────────┴─────────┴───────────────────────────╯ + +--- + +[TestPrintTableResults_LongTerminalWidth_WithVulnerabilities/two_sources_with_the_same_vulnerable_package - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────────â”Ŧ─────────â”Ŧ────────────────────────────╮ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE │ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────────â”ŧ─────────â”ŧ────────────────────────────┤ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfile │ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 (dev) │ 1.2.3 │ path/to/my/second/lockfile │ +╰───────────────────────┴──────┴───────────┴─────────────┴─────────┴────────────────────────────╯ + +--- + +[TestPrintTableResults_NoTerminalWidth_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_no_license_violations - 1] + +--- + +[TestPrintTableResults_NoTerminalWidth_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_some_license_violations - 1] ++-------------------+-----------+---------+---------+----------------------------+ +| LICENSE VIOLATION | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++-------------------+-----------+---------+---------+----------------------------+ +| MIT | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | +| Apache-2.0 | npm | mine2 | 3.2.5 | path/to/my/second/lockfile | +| MIT | npm | mine1 | 1.2.3 | path/to/my/third/lockfile | ++-------------------+-----------+---------+---------+----------------------------+ + +--- + +[TestPrintTableResults_NoTerminalWidth_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_some_license_violations#01 - 1] + +--- + +[TestPrintTableResults_NoTerminalWidth_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages_across_ecosystems,_some_license_violations - 1] ++-------------------+-----------+---------+---------+----------------------------+ +| LICENSE VIOLATION | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++-------------------+-----------+---------+---------+----------------------------+ +| MIT | Packagist | mine1 | 1.2.3 | path/to/my/first/lockfile | +| Apache-2.0 | npm | mine2 | 3.2.5 | path/to/my/second/lockfile | +| MIT | Packagist | mine1 | 1.2.3 | path/to/my/third/lockfile | ++-------------------+-----------+---------+---------+----------------------------+ + +--- + +[TestPrintTableResults_NoTerminalWidth_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages_and_groups,_some_license_violations - 1] ++-------------------+-----------+---------+---------+----------------------------+ +| LICENSE VIOLATION | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++-------------------+-----------+---------+---------+----------------------------+ +| MIT | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | +| Apache-2.0 | npm | mine2 | 3.2.5 | path/to/my/second/lockfile | +| MIT | npm | mine1 | 1.2.3 | path/to/my/third/lockfile | ++-------------------+-----------+---------+---------+----------------------------+ + +--- + +[TestPrintTableResults_NoTerminalWidth_WithLicenseViolations/multiple_sources_with_no_packages - 1] + +--- + +[TestPrintTableResults_NoTerminalWidth_WithLicenseViolations/no_sources - 1] + +--- + +[TestPrintTableResults_NoTerminalWidth_WithLicenseViolations/one_source_with_no_packages - 1] + +--- + +[TestPrintTableResults_NoTerminalWidth_WithLicenseViolations/one_source_with_one_package,_no_license_violations - 1] + +--- + +[TestPrintTableResults_NoTerminalWidth_WithLicenseViolations/one_source_with_one_package,_no_licenses - 1] + +--- + +[TestPrintTableResults_NoTerminalWidth_WithLicenseViolations/one_source_with_one_package_and_an_unknown_license - 1] + +--- + +[TestPrintTableResults_NoTerminalWidth_WithLicenseViolations/one_source_with_one_package_and_multiple_license_violations - 1] ++-------------------+-----------+---------+---------+---------------------------+ +| LICENSE VIOLATION | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++-------------------+-----------+---------+---------+---------------------------+ +| MIT, Apache-2.0 | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | ++-------------------+-----------+---------+---------+---------------------------+ + +--- + +[TestPrintTableResults_NoTerminalWidth_WithLicenseViolations/one_source_with_one_package_and_one_license_violation - 1] ++-------------------+-----------+---------+---------+---------------------------+ +| LICENSE VIOLATION | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++-------------------+-----------+---------+---------+---------------------------+ +| MIT | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | ++-------------------+-----------+---------+---------+---------------------------+ + +--- + +[TestPrintTableResults_NoTerminalWidth_WithLicenseViolations/one_source_with_one_package_and_one_license_violation_(dev) - 1] ++-------------------+-----------+---------+---------+---------------------------+ +| LICENSE VIOLATION | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++-------------------+-----------+---------+---------+---------------------------+ +| MIT | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | ++-------------------+-----------+---------+---------+---------------------------+ + +--- + +[TestPrintTableResults_NoTerminalWidth_WithLicenseViolations/two_sources_with_packages,_one_license_violation - 1] ++-------------------+-----------+---------+---------+---------------------------+ +| LICENSE VIOLATION | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++-------------------+-----------+---------+---------+---------------------------+ +| MIT | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | ++-------------------+-----------+---------+---------+---------------------------+ + +--- + +[TestPrintTableResults_NoTerminalWidth_WithMixedIssues/multiple_sources_with_a_mixed_count_of_packages,_some_vulnerabilities_and_license_violations - 1] ++-----------------------+------+-----------+---------+---------+----------------------------+ +| OSV URL | CVSS | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++-----------------------+------+-----------+---------+---------+----------------------------+ +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | +| https://osv.dev/OSV-2 | | npm | mine2 | 3.2.5 | path/to/my/second/lockfile | +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/third/lockfile | ++-----------------------+------+-----------+---------+---------+----------------------------+ ++-------------------+-----------+---------+---------+---------------------------+ +| LICENSE VIOLATION | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++-------------------+-----------+---------+---------+---------------------------+ +| MIT | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | +| MIT | npm | mine1 | 1.3.5 | path/to/my/third/lockfile | +| Apache-2.0 | npm | mine1 | 1.2.3 | path/to/my/third/lockfile | ++-------------------+-----------+---------+---------+---------------------------+ + +--- + +[TestPrintTableResults_NoTerminalWidth_WithMixedIssues/one_source_with_one_package,_one_vulnerability,_and_one_license_violation - 1] ++-----------------------+------+-----------+---------+---------+---------------------------+ +| OSV URL | CVSS | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++-----------------------+------+-----------+---------+---------+---------------------------+ +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | ++-----------------------+------+-----------+---------+---------+---------------------------+ ++-------------------+-----------+---------+---------+---------------------------+ +| LICENSE VIOLATION | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++-------------------+-----------+---------+---------+---------------------------+ +| MIT | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | ++-------------------+-----------+---------+---------+---------------------------+ + +--- + +[TestPrintTableResults_NoTerminalWidth_WithMixedIssues/two_sources_with_packages,_one_vulnerability,_one_license_violation - 1] ++-----------------------+------+-----------+---------+---------+---------------------------+ +| OSV URL | CVSS | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++-----------------------+------+-----------+---------+---------+---------------------------+ +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | ++-----------------------+------+-----------+---------+---------+---------------------------+ ++-------------------+-----------+---------+---------+----------------------------+ +| LICENSE VIOLATION | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++-------------------+-----------+---------+---------+----------------------------+ +| MIT | npm | mine2 | 5.9.0 | path/to/my/second/lockfile | ++-------------------+-----------+---------+---------+----------------------------+ + +--- + +[TestPrintTableResults_NoTerminalWidth_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_grouped_packages,_and_multiple_vulnerabilities - 1] ++-----------------------+------+-----------+-------------+---------+----------------------------+ +| OSV URL | CVSS | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++-----------------------+------+-----------+-------------+---------+----------------------------+ +| https://osv.dev/OSV-1 | | npm | mine1 (dev) | 1.2.3 | path/to/my/first/lockfile | +| https://osv.dev/OSV-5 | | npm | mine1 (dev) | 1.2.3 | path/to/my/first/lockfile | +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.2 | path/to/my/first/lockfile | +| https://osv.dev/OSV-2 | | npm | mine2 (dev) | 3.2.5 | path/to/my/second/lockfile | +| https://osv.dev/OSV-3 | | npm | mine3 | 0.4.1 | path/to/my/second/lockfile | +| https://osv.dev/OSV-5 | | npm | mine3 | 0.4.1 | path/to/my/second/lockfile | ++-----------------------+------+-----------+-------------+---------+----------------------------+ + +--- + +[TestPrintTableResults_NoTerminalWidth_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_and_multiple_vulnerabilities - 1] ++-----------------------+------+-----------+---------+---------+----------------------------+ +| OSV URL | CVSS | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++-----------------------+------+-----------+---------+---------+----------------------------+ +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | +| https://osv.dev/OSV-5 | | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.2 | path/to/my/first/lockfile | +| https://osv.dev/OSV-2 | | npm | mine2 | 3.2.5 | path/to/my/second/lockfile | +| https://osv.dev/OSV-3 | | npm | mine3 | 0.4.1 | path/to/my/second/lockfile | +| https://osv.dev/OSV-5 | | npm | mine3 | 0.4.1 | path/to/my/second/lockfile | ++-----------------------+------+-----------+---------+---------+----------------------------+ + +--- + +[TestPrintTableResults_NoTerminalWidth_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_no_vulnerabilities - 1] + +--- + +[TestPrintTableResults_NoTerminalWidth_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_some_vulnerabilities - 1] ++-----------------------+------+-----------+---------+---------+----------------------------+ +| OSV URL | CVSS | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++-----------------------+------+-----------+---------+---------+----------------------------+ +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | +| https://osv.dev/OSV-2 | | npm | mine2 | 3.2.5 | path/to/my/second/lockfile | +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/third/lockfile | ++-----------------------+------+-----------+---------+---------+----------------------------+ + +--- + +[TestPrintTableResults_NoTerminalWidth_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages_across_ecosystems,_and_multiple_vulnerabilities - 1] ++-----------------------+------+-----------+---------+---------+----------------------------+ +| OSV URL | CVSS | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++-----------------------+------+-----------+---------+---------+----------------------------+ +| https://osv.dev/OSV-1 | | Packagist | mine1 | 1.2.3 | path/to/my/first/lockfile | +| https://osv.dev/OSV-5 | | Packagist | mine1 | 1.2.3 | path/to/my/first/lockfile | +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.2 | path/to/my/first/lockfile | +| https://osv.dev/OSV-2 | | NuGet | mine2 | 3.2.5 | path/to/my/second/lockfile | +| https://osv.dev/OSV-3 | | Packagist | mine3 | 0.4.1 | path/to/my/second/lockfile | +| https://osv.dev/OSV-5 | | Packagist | mine3 | 0.4.1 | path/to/my/second/lockfile | ++-----------------------+------+-----------+---------+---------+----------------------------+ + +--- + +[TestPrintTableResults_NoTerminalWidth_WithVulnerabilities/multiple_sources_with_no_packages - 1] + +--- + +[TestPrintTableResults_NoTerminalWidth_WithVulnerabilities/no_sources - 1] + +--- + +[TestPrintTableResults_NoTerminalWidth_WithVulnerabilities/one_source_with_no_packages - 1] + +--- + +[TestPrintTableResults_NoTerminalWidth_WithVulnerabilities/one_source_with_one_package,_no_vulnerabilities - 1] + +--- + +[TestPrintTableResults_NoTerminalWidth_WithVulnerabilities/one_source_with_one_package_and_one_vulnerability - 1] ++-----------------------+------+-----------+---------+---------+---------------------------+ +| OSV URL | CVSS | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++-----------------------+------+-----------+---------+---------+---------------------------+ +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | ++-----------------------+------+-----------+---------+---------+---------------------------+ + +--- + +[TestPrintTableResults_NoTerminalWidth_WithVulnerabilities/one_source_with_one_package_and_one_vulnerability_(dev) - 1] ++-----------------------+------+-----------+-------------+---------+---------------------------+ +| OSV URL | CVSS | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++-----------------------+------+-----------+-------------+---------+---------------------------+ +| https://osv.dev/OSV-1 | | npm | mine1 (dev) | 1.2.3 | path/to/my/first/lockfile | ++-----------------------+------+-----------+-------------+---------+---------------------------+ + +--- + +[TestPrintTableResults_NoTerminalWidth_WithVulnerabilities/one_source_with_one_package_and_two_aliases_of_a_single_vulnerability - 1] ++--------------------------+------+-----------+---------+---------+---------------------------+ +| OSV URL | CVSS | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++--------------------------+------+-----------+---------+---------+---------------------------+ +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | +| https://osv.dev/GHSA-123 | | | | | | ++--------------------------+------+-----------+---------+---------+---------------------------+ + +--- + +[TestPrintTableResults_NoTerminalWidth_WithVulnerabilities/one_source_with_vulnerabilities,_some_missing_content - 1] ++-----------------------+------+-----------+---------+-----------+---------------------------+ +| OSV URL | CVSS | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++-----------------------+------+-----------+---------+-----------+---------------------------+ +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | +| https://osv.dev/OSV-2 | | npm | mine3 | 0.10.2-rc | path/to/my/first/lockfile | ++-----------------------+------+-----------+---------+-----------+---------------------------+ + +--- + +[TestPrintTableResults_NoTerminalWidth_WithVulnerabilities/two_sources_with_packages,_one_vulnerability - 1] ++-----------------------+------+-----------+---------+---------+---------------------------+ +| OSV URL | CVSS | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++-----------------------+------+-----------+---------+---------+---------------------------+ +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | ++-----------------------+------+-----------+---------+---------+---------------------------+ + +--- + +[TestPrintTableResults_NoTerminalWidth_WithVulnerabilities/two_sources_with_the_same_vulnerable_package - 1] ++-----------------------+------+-----------+-------------+---------+----------------------------+ +| OSV URL | CVSS | ECOSYSTEM | PACKAGE | VERSION | SOURCE | ++-----------------------+------+-----------+-------------+---------+----------------------------+ +| https://osv.dev/OSV-1 | | npm | mine1 | 1.2.3 | path/to/my/first/lockfile | +| https://osv.dev/OSV-1 | | npm | mine1 (dev) | 1.2.3 | path/to/my/second/lockfile | ++-----------------------+------+-----------+-------------+---------+----------------------------+ + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_no_license_violations - 1] + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_some_license_violations - 1] +╭───────────────────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ───────────────────────── ≈ +│ LICENSE VIOLATION │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├───────────────────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ───────────────────────── ≈ +│ MIT │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfil ≈ +│ Apache-2.0 │ npm │ mine2 │ 3.2.5 │ path/to/my/second/lockfi ≈ +│ MIT │ npm │ mine1 │ 1.2.3 │ path/to/my/third/lockfil ≈ +╰───────────────────┴───────────┴─────────┴─────────┴───────────────────────── ≈ + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages,_some_license_violations#01 - 1] + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages_across_ecosystems,_some_license_violations - 1] +╭───────────────────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ───────────────────────── ≈ +│ LICENSE VIOLATION │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├───────────────────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ───────────────────────── ≈ +│ MIT │ Packagist │ mine1 │ 1.2.3 │ path/to/my/first/lockfil ≈ +│ Apache-2.0 │ npm │ mine2 │ 3.2.5 │ path/to/my/second/lockfi ≈ +│ MIT │ Packagist │ mine1 │ 1.2.3 │ path/to/my/third/lockfil ≈ +╰───────────────────┴───────────┴─────────┴─────────┴───────────────────────── ≈ + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithLicenseViolations/multiple_sources_with_a_mixed_count_of_packages_and_groups,_some_license_violations - 1] +╭───────────────────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ───────────────────────── ≈ +│ LICENSE VIOLATION │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├───────────────────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ───────────────────────── ≈ +│ MIT │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfil ≈ +│ Apache-2.0 │ npm │ mine2 │ 3.2.5 │ path/to/my/second/lockfi ≈ +│ MIT │ npm │ mine1 │ 1.2.3 │ path/to/my/third/lockfil ≈ +╰───────────────────┴───────────┴─────────┴─────────┴───────────────────────── ≈ + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithLicenseViolations/multiple_sources_with_no_packages - 1] + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithLicenseViolations/no_sources - 1] + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithLicenseViolations/one_source_with_no_packages - 1] + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithLicenseViolations/one_source_with_one_package,_no_license_violations - 1] + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithLicenseViolations/one_source_with_one_package,_no_licenses - 1] + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithLicenseViolations/one_source_with_one_package_and_an_unknown_license - 1] + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithLicenseViolations/one_source_with_one_package_and_multiple_license_violations - 1] +╭───────────────────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ───────────────────────── ≈ +│ LICENSE VIOLATION │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├───────────────────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ───────────────────────── ≈ +│ MIT, Apache-2.0 │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfil ≈ +╰───────────────────┴───────────┴─────────┴─────────┴───────────────────────── ≈ + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithLicenseViolations/one_source_with_one_package_and_one_license_violation - 1] +╭───────────────────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ───────────────────────── ≈ +│ LICENSE VIOLATION │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├───────────────────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ───────────────────────── ≈ +│ MIT │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfil ≈ +╰───────────────────┴───────────┴─────────┴─────────┴───────────────────────── ≈ + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithLicenseViolations/one_source_with_one_package_and_one_license_violation_(dev) - 1] +╭───────────────────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ───────────────────────── ≈ +│ LICENSE VIOLATION │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├───────────────────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ───────────────────────── ≈ +│ MIT │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfil ≈ +╰───────────────────┴───────────┴─────────┴─────────┴───────────────────────── ≈ + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithLicenseViolations/two_sources_with_packages,_one_license_violation - 1] +╭───────────────────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ───────────────────────── ≈ +│ LICENSE VIOLATION │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├───────────────────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ───────────────────────── ≈ +│ MIT │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfil ≈ +╰───────────────────┴───────────┴─────────┴─────────┴───────────────────────── ≈ + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithMixedIssues/multiple_sources_with_a_mixed_count_of_packages,_some_vulnerabilities_and_license_violations - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ────────────── ≈ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ────────────── ≈ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/fi ≈ +│ https://osv.dev/OSV-2 │ │ npm │ mine2 │ 3.2.5 │ path/to/my/se ≈ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/th ≈ +╰───────────────────────┴──────┴───────────┴─────────┴─────────┴────────────── ≈ +╭───────────────────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ───────────────────────── ≈ +│ LICENSE VIOLATION │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├───────────────────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ───────────────────────── ≈ +│ MIT │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfil ≈ +│ MIT │ npm │ mine1 │ 1.3.5 │ path/to/my/third/lockfil ≈ +│ Apache-2.0 │ npm │ mine1 │ 1.2.3 │ path/to/my/third/lockfil ≈ +╰───────────────────┴───────────┴─────────┴─────────┴───────────────────────── ≈ + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithMixedIssues/one_source_with_one_package,_one_vulnerability,_and_one_license_violation - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ────────────── ≈ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ────────────── ≈ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/fi ≈ +╰───────────────────────┴──────┴───────────┴─────────┴─────────┴────────────── ≈ +╭───────────────────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ───────────────────────── ≈ +│ LICENSE VIOLATION │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├───────────────────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ───────────────────────── ≈ +│ MIT │ npm │ mine1 │ 1.2.3 │ path/to/my/first/lockfil ≈ +╰───────────────────┴───────────┴─────────┴─────────┴───────────────────────── ≈ + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithMixedIssues/two_sources_with_packages,_one_vulnerability,_one_license_violation - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ────────────── ≈ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ────────────── ≈ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/fi ≈ +╰───────────────────────┴──────┴───────────┴─────────┴─────────┴────────────── ≈ +╭───────────────────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ───────────────────────── ≈ +│ LICENSE VIOLATION │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├───────────────────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ───────────────────────── ≈ +│ MIT │ npm │ mine2 │ 5.9.0 │ path/to/my/second/lockfi ≈ +╰───────────────────┴───────────┴─────────┴─────────┴───────────────────────── ≈ + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_grouped_packages,_and_multiple_vulnerabilities - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────────â”Ŧ─────────â”Ŧ────────── ≈ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────────â”ŧ─────────â”ŧ────────── ≈ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 (dev) │ 1.2.3 │ path/to/m ≈ +│ https://osv.dev/OSV-5 │ │ npm │ mine1 (dev) │ 1.2.3 │ path/to/m ≈ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.2 │ path/to/m ≈ +│ https://osv.dev/OSV-2 │ │ npm │ mine2 (dev) │ 3.2.5 │ path/to/m ≈ +│ https://osv.dev/OSV-3 │ │ npm │ mine3 │ 0.4.1 │ path/to/m ≈ +│ https://osv.dev/OSV-5 │ │ npm │ mine3 │ 0.4.1 │ path/to/m ≈ +╰───────────────────────┴──────┴───────────┴─────────────┴─────────┴────────── ≈ + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_and_multiple_vulnerabilities - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ────────────── ≈ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ────────────── ≈ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/fi ≈ +│ https://osv.dev/OSV-5 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/fi ≈ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.2 │ path/to/my/fi ≈ +│ https://osv.dev/OSV-2 │ │ npm │ mine2 │ 3.2.5 │ path/to/my/se ≈ +│ https://osv.dev/OSV-3 │ │ npm │ mine3 │ 0.4.1 │ path/to/my/se ≈ +│ https://osv.dev/OSV-5 │ │ npm │ mine3 │ 0.4.1 │ path/to/my/se ≈ +╰───────────────────────┴──────┴───────────┴─────────┴─────────┴────────────── ≈ + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_no_vulnerabilities - 1] + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages,_some_vulnerabilities - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ────────────── ≈ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ────────────── ≈ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/fi ≈ +│ https://osv.dev/OSV-2 │ │ npm │ mine2 │ 3.2.5 │ path/to/my/se ≈ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/th ≈ +╰───────────────────────┴──────┴───────────┴─────────┴─────────┴────────────── ≈ + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithVulnerabilities/multiple_sources_with_a_mixed_count_of_packages_across_ecosystems,_and_multiple_vulnerabilities - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ────────────── ≈ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ────────────── ≈ +│ https://osv.dev/OSV-1 │ │ Packagist │ mine1 │ 1.2.3 │ path/to/my/fi ≈ +│ https://osv.dev/OSV-5 │ │ Packagist │ mine1 │ 1.2.3 │ path/to/my/fi ≈ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.2 │ path/to/my/fi ≈ +│ https://osv.dev/OSV-2 │ │ NuGet │ mine2 │ 3.2.5 │ path/to/my/se ≈ +│ https://osv.dev/OSV-3 │ │ Packagist │ mine3 │ 0.4.1 │ path/to/my/se ≈ +│ https://osv.dev/OSV-5 │ │ Packagist │ mine3 │ 0.4.1 │ path/to/my/se ≈ +╰───────────────────────┴──────┴───────────┴─────────┴─────────┴────────────── ≈ + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithVulnerabilities/multiple_sources_with_no_packages - 1] + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithVulnerabilities/no_sources - 1] + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithVulnerabilities/one_source_with_no_packages - 1] + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithVulnerabilities/one_source_with_one_package,_no_vulnerabilities - 1] + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithVulnerabilities/one_source_with_one_package_and_one_vulnerability - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ────────────── ≈ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ────────────── ≈ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/fi ≈ +╰───────────────────────┴──────┴───────────┴─────────┴─────────┴────────────── ≈ + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithVulnerabilities/one_source_with_one_package_and_one_vulnerability_(dev) - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────────â”Ŧ─────────â”Ŧ────────── ≈ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────────â”ŧ─────────â”ŧ────────── ≈ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 (dev) │ 1.2.3 │ path/to/m ≈ +╰───────────────────────┴──────┴───────────┴─────────────┴─────────┴────────── ≈ + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithVulnerabilities/one_source_with_one_package_and_two_aliases_of_a_single_vulnerability - 1] +╭──────────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ─────────── ≈ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├──────────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ─────────── ≈ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my ≈ +│ https://osv.dev/GHSA-123 │ │ │ │ │ ≈ +╰──────────────────────────┴──────┴───────────┴─────────┴─────────┴─────────── ≈ + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithVulnerabilities/one_source_with_vulnerabilities,_some_missing_content - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────â”Ŧ───────────â”Ŧ──────────── ≈ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────â”ŧ───────────â”ŧ──────────── ≈ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/ ≈ +│ https://osv.dev/OSV-2 │ │ npm │ mine3 │ 0.10.2-rc │ path/to/my/ ≈ +╰───────────────────────┴──────┴───────────┴─────────┴───────────┴──────────── ≈ + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithVulnerabilities/two_sources_with_packages,_one_vulnerability - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────â”Ŧ─────────â”Ŧ────────────── ≈ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────â”ŧ─────────â”ŧ────────────── ≈ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/my/fi ≈ +╰───────────────────────┴──────┴───────────┴─────────┴─────────┴────────────── ≈ + +--- + +[TestPrintTableResults_StandardTerminalWidth_WithVulnerabilities/two_sources_with_the_same_vulnerable_package - 1] +╭───────────────────────â”Ŧ──────â”Ŧ───────────â”Ŧ─────────────â”Ŧ─────────â”Ŧ────────── ≈ +│ OSV URL │ CVSS │ ECOSYSTEM │ PACKAGE │ VERSION │ SOURCE ≈ +├───────────────────────â”ŧ──────â”ŧ───────────â”ŧ─────────────â”ŧ─────────â”ŧ────────── ≈ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 │ 1.2.3 │ path/to/m ≈ +│ https://osv.dev/OSV-1 │ │ npm │ mine1 (dev) │ 1.2.3 │ path/to/m ≈ +╰───────────────────────┴──────┴───────────┴─────────────┴─────────┴────────── ≈ + +--- diff --git a/internal/output/githubannotation_test.go b/internal/output/githubannotation_test.go new file mode 100644 index 00000000000..568426b1036 --- /dev/null +++ b/internal/output/githubannotation_test.go @@ -0,0 +1,60 @@ +package output_test + +import ( + "bytes" + "testing" + + "github.com/google/osv-scanner/internal/output" + "github.com/google/osv-scanner/internal/testutility" +) + +func TestPrintGHAnnotationReport_WithVulnerabilities(t *testing.T) { + t.Parallel() + + testOutputWithVulnerabilities(t, func(t *testing.T, args outputTestCaseArgs) { + t.Helper() + + outputWriter := &bytes.Buffer{} + err := output.PrintGHAnnotationReport(args.vulnResult, outputWriter) + + if err != nil { + t.Errorf("Error writing GH annotation output: %s", err) + } + + testutility.NewSnapshot().MatchText(t, outputWriter.String()) + }) +} + +func TestPrintGHAnnotationReport_WithLicenseViolations(t *testing.T) { + t.Parallel() + + testOutputWithLicenseViolations(t, func(t *testing.T, args outputTestCaseArgs) { + t.Helper() + + outputWriter := &bytes.Buffer{} + err := output.PrintGHAnnotationReport(args.vulnResult, outputWriter) + + if err != nil { + t.Errorf("Error writing GH annotation output: %s", err) + } + + testutility.NewSnapshot().MatchText(t, outputWriter.String()) + }) +} + +func TestPrintGHAnnotationReport_WithMixedIssues(t *testing.T) { + t.Parallel() + + testOutputWithMixedIssues(t, func(t *testing.T, args outputTestCaseArgs) { + t.Helper() + + outputWriter := &bytes.Buffer{} + err := output.PrintGHAnnotationReport(args.vulnResult, outputWriter) + + if err != nil { + t.Errorf("Error writing GH annotation output: %s", err) + } + + testutility.NewSnapshot().MatchText(t, outputWriter.String()) + }) +} diff --git a/internal/output/helpers_test.go b/internal/output/helpers_test.go new file mode 100644 index 00000000000..5f570eca8b4 --- /dev/null +++ b/internal/output/helpers_test.go @@ -0,0 +1,1556 @@ +package output_test + +import ( + "testing" + + "github.com/google/osv-scanner/pkg/models" +) + +type outputTestCaseArgs struct { + vulnResult *models.VulnerabilityResults +} + +type outputTestCase struct { + name string + args outputTestCaseArgs +} + +type outputTestRunner = func(t *testing.T, args outputTestCaseArgs) + +func testOutputWithVulnerabilities(t *testing.T, run outputTestRunner) { + t.Helper() + + tests := []outputTestCase{ + { + name: "no sources", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + Results: []models.PackageSource{}, + }, + }, + }, + { + name: "one source with no packages", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{}, + }, + }, + }, + }, + }, + { + name: "multiple sources with no packages", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{}, + }, + { + Source: models.SourceInfo{Path: "path/to/my/second/lockfile"}, + Packages: []models.PackageVulns{}, + }, + { + Source: models.SourceInfo{Path: "path/to/my/third/lockfile"}, + Packages: []models.PackageVulns{}, + }, + }, + }, + }, + }, + { + name: "one source with one package, no vulnerabilities", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Vulnerabilities: models.Vulnerabilities{}, + }, + }, + }, + }, + }, + }, + }, + { + name: "multiple sources with a mixed count of packages, no vulnerabilities", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Vulnerabilities: models.Vulnerabilities{}, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/second/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine2", + Version: "3.2.5", + Ecosystem: "npm", + }, + Vulnerabilities: models.Vulnerabilities{}, + }, + { + Package: models.PackageInfo{ + Name: "mine3", + Version: "0.4.1", + Ecosystem: "npm", + }, + Vulnerabilities: models.Vulnerabilities{}, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/third/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.3.5", + Ecosystem: "npm", + }, + Vulnerabilities: models.Vulnerabilities{}, + }, + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Vulnerabilities: models.Vulnerabilities{}, + }, + }, + }, + }, + }, + }, + }, + { + name: "one source with one package and one vulnerability", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Groups: []models.GroupInfo{{IDs: []string{"OSV-1"}}}, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-1", + Summary: "Something scary!", + Severity: []models.Severity{{Type: "high", Score: "1"}}, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: "one source with one package and one vulnerability (dev)", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + DepGroups: []string{"dev"}, + Groups: []models.GroupInfo{{IDs: []string{"OSV-1"}}}, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-1", + Summary: "Something scary!", + Severity: []models.Severity{{Type: "high", Score: "1"}}, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: "two sources with the same vulnerable package", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Groups: []models.GroupInfo{{IDs: []string{"OSV-1"}}}, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-1", + Summary: "Something scary!", + Severity: []models.Severity{{Type: "high", Score: "1"}}, + }, + }, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/second/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + DepGroups: []string{"dev"}, + Groups: []models.GroupInfo{{IDs: []string{"OSV-1"}}}, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-1", + Summary: "Something scary!", + Severity: []models.Severity{{Type: "high", Score: "1"}}, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: "one source with one package and two aliases of a single vulnerability", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Groups: []models.GroupInfo{{ + IDs: []string{"OSV-1", "GHSA-123"}, + Aliases: []string{"OSV-1", "GHSA-123"}, + }}, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-1", + Summary: "Something scary!", + Severity: []models.Severity{{Type: "high", Score: "1"}}, + }, + { + ID: "GHSA-123", + Summary: "Something scary!", + Aliases: []string{"OSV-1"}, + Severity: []models.Severity{{Type: "high", Score: "1"}}, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: "two sources with packages, one vulnerability", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Groups: []models.GroupInfo{{IDs: []string{"OSV-1"}}}, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-1", + Summary: "Something scary!", + Severity: []models.Severity{{Type: "high", Score: "1"}}, + }, + }, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/second/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine2", + Version: "5.9.0", + Ecosystem: "npm", + }, + Vulnerabilities: models.Vulnerabilities{}, + }, + }, + }, + }, + }, + }, + }, + { + name: "multiple sources with a mixed count of packages, some vulnerabilities", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Groups: []models.GroupInfo{{IDs: []string{"OSV-1"}}}, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-1", + Summary: "Something scary!", + Severity: []models.Severity{{Type: "high", Score: "1"}}, + }, + }, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/second/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine2", + Version: "3.2.5", + Ecosystem: "npm", + }, + Groups: []models.GroupInfo{{IDs: []string{"OSV-2"}}}, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-2", + Summary: "Something less scary!", + Severity: []models.Severity{{Type: "low", Score: "1"}}, + }, + }, + }, + { + Package: models.PackageInfo{ + Name: "mine3", + Version: "0.4.1", + Ecosystem: "npm", + }, + Vulnerabilities: models.Vulnerabilities{}, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/third/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.3.5", + Ecosystem: "npm", + }, + Vulnerabilities: models.Vulnerabilities{}, + }, + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Groups: []models.GroupInfo{{IDs: []string{"OSV-1"}}}, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-1", + Summary: "Something scary!", + Severity: []models.Severity{{Type: "high", Score: "1"}}, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: "multiple sources with a mixed count of packages, and multiple vulnerabilities", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Groups: []models.GroupInfo{ + {IDs: []string{"OSV-1"}}, + {IDs: []string{"OSV-5"}}, + }, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-1", + Summary: "Something scary!", + Severity: []models.Severity{{Type: "high", Score: "1"}}, + }, + { + ID: "OSV-5", + Summary: "Something scarier!", + Severity: []models.Severity{{Type: "extreme", Score: "1"}}, + }, + }, + }, + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.2", + Ecosystem: "npm", + }, + Groups: []models.GroupInfo{{IDs: []string{"OSV-1"}}}, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-1", + Summary: "Something scary!", + Severity: []models.Severity{{Type: "high", Score: "1"}}, + }, + }, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/second/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine2", + Version: "3.2.5", + Ecosystem: "npm", + }, + Groups: []models.GroupInfo{{IDs: []string{"OSV-2"}}}, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-2", + Summary: "Something less scary!", + Severity: []models.Severity{{Type: "low", Score: "1"}}, + }, + }, + }, + { + Package: models.PackageInfo{ + Name: "mine3", + Version: "0.4.1", + Ecosystem: "npm", + }, + Groups: []models.GroupInfo{ + {IDs: []string{"OSV-3"}}, + {IDs: []string{"OSV-5"}}, + }, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-3", + Summary: "Something mildly scary!", + Severity: []models.Severity{{Type: "medium", Score: "1"}}, + }, + { + ID: "OSV-5", + Summary: "Something scarier!", + Severity: []models.Severity{{Type: "extreme", Score: "1"}}, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: "multiple sources with a mixed count of grouped packages, and multiple vulnerabilities", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + DepGroups: []string{"dev", "optional"}, + Groups: []models.GroupInfo{ + {IDs: []string{"OSV-1"}}, + {IDs: []string{"OSV-5"}}, + }, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-1", + Summary: "Something scary!", + Severity: []models.Severity{{Type: "high", Score: "1"}}, + }, + { + ID: "OSV-5", + Summary: "Something scarier!", + Severity: []models.Severity{{Type: "extreme", Score: "1"}}, + }, + }, + }, + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.2", + Ecosystem: "npm", + }, + Groups: []models.GroupInfo{{IDs: []string{"OSV-1"}}}, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-1", + Summary: "Something scary!", + Severity: []models.Severity{{Type: "high", Score: "1"}}, + }, + }, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/second/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine2", + Version: "3.2.5", + Ecosystem: "npm", + }, + DepGroups: []string{"dev"}, + Groups: []models.GroupInfo{{IDs: []string{"OSV-2"}}}, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-2", + Summary: "Something less scary!", + Severity: []models.Severity{{Type: "low", Score: "1"}}, + }, + }, + }, + { + Package: models.PackageInfo{ + Name: "mine3", + Version: "0.4.1", + Ecosystem: "npm", + }, + DepGroups: []string{"build"}, + Groups: []models.GroupInfo{ + {IDs: []string{"OSV-3"}}, + {IDs: []string{"OSV-5"}}, + }, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-3", + Summary: "Something mildly scary!", + Severity: []models.Severity{{Type: "medium", Score: "1"}}, + }, + { + ID: "OSV-5", + Summary: "Something scarier!", + Severity: []models.Severity{{Type: "extreme", Score: "1"}}, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: "multiple sources with a mixed count of packages across ecosystems, and multiple vulnerabilities", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "Packagist", + }, + Groups: []models.GroupInfo{ + {IDs: []string{"OSV-1"}}, + {IDs: []string{"OSV-5"}}, + }, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-1", + Summary: "Something scary!", + Severity: []models.Severity{{Type: "high", Score: "1"}}, + }, + { + ID: "OSV-5", + Summary: "Something scarier!", + Severity: []models.Severity{{Type: "extreme", Score: "1"}}, + }, + }, + }, + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.2", + Ecosystem: "npm", + }, + Groups: []models.GroupInfo{{IDs: []string{"OSV-1"}}}, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-1", + Summary: "Something scary!", + Severity: []models.Severity{{Type: "high", Score: "1"}}, + }, + }, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/second/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine2", + Version: "3.2.5", + Ecosystem: "NuGet", + }, + DepGroups: []string{"dev"}, + Groups: []models.GroupInfo{{IDs: []string{"OSV-2"}}}, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-2", + Summary: "Something less scary!", + Severity: []models.Severity{{Type: "low", Score: "1"}}, + }, + }, + }, + { + Package: models.PackageInfo{ + Name: "mine3", + Version: "0.4.1", + Ecosystem: "Packagist", + }, + DepGroups: []string{"build"}, + Groups: []models.GroupInfo{ + {IDs: []string{"OSV-3"}}, + {IDs: []string{"OSV-5"}}, + }, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-3", + Summary: "Something mildly scary!", + Severity: []models.Severity{{Type: "medium", Score: "1"}}, + }, + { + ID: "OSV-5", + Summary: "Something scarier!", + Severity: []models.Severity{{Type: "extreme", Score: "1"}}, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: "one source with vulnerabilities, some missing content", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Groups: []models.GroupInfo{{IDs: []string{"OSV-1"}}}, + Vulnerabilities: models.Vulnerabilities{ + {ID: "OSV-1", Details: "This vulnerability allows for some very scary stuff to happen - seriously, you'd not believe it!"}, + }, + }, + { + Package: models.PackageInfo{ + Name: "mine3", + Version: "0.10.2-rc", + Ecosystem: "npm", + }, + Groups: []models.GroupInfo{{IDs: []string{"OSV-2"}}}, + Vulnerabilities: models.Vulnerabilities{ + {ID: "OSV-2"}, + }, + }, + }, + }, + }, + }, + }, + }, + } + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + + run(t, tt.args) + }) + } +} + +func testOutputWithLicenseViolations(t *testing.T, run outputTestRunner) { + t.Helper() + + experimentalAnalysisConfig := models.ExperimentalAnalysisConfig{ + Licenses: models.ExperimentalLicenseConfig{Summary: false, Allowlist: []models.License{"ISC"}}, + } + + tests := []outputTestCase{ + { + name: "no sources", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + ExperimentalAnalysisConfig: experimentalAnalysisConfig, + Results: []models.PackageSource{}, + }, + }, + }, + { + name: "one source with no packages", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + ExperimentalAnalysisConfig: experimentalAnalysisConfig, + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{}, + }, + }, + }, + }, + }, + { + name: "multiple sources with no packages", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + ExperimentalAnalysisConfig: experimentalAnalysisConfig, + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{}, + }, + { + Source: models.SourceInfo{Path: "path/to/my/second/lockfile"}, + Packages: []models.PackageVulns{}, + }, + { + Source: models.SourceInfo{Path: "path/to/my/third/lockfile"}, + Packages: []models.PackageVulns{}, + }, + }, + }, + }, + }, + { + name: "one source with one package, no licenses", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + ExperimentalAnalysisConfig: experimentalAnalysisConfig, + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Licenses: []models.License{}, + LicenseViolations: []models.License{}, + }, + }, + }, + }, + }, + }, + }, + { + name: "one source with one package and an unknown license", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + ExperimentalAnalysisConfig: experimentalAnalysisConfig, + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Licenses: []models.License{"UNKNOWN"}, + LicenseViolations: []models.License{}, + }, + }, + }, + }, + }, + }, + }, + { + name: "one source with one package, no license violations", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + ExperimentalAnalysisConfig: experimentalAnalysisConfig, + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Licenses: []models.License{"ISC"}, + LicenseViolations: []models.License{}, + }, + }, + }, + }, + }, + }, + }, + { + name: "multiple sources with a mixed count of packages, no license violations", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + ExperimentalAnalysisConfig: experimentalAnalysisConfig, + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Licenses: []models.License{"ISC"}, + LicenseViolations: []models.License{}, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/second/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine2", + Version: "3.2.5", + Ecosystem: "npm", + }, + Licenses: []models.License{"ISC"}, + LicenseViolations: []models.License{}, + }, + { + Package: models.PackageInfo{ + Name: "mine3", + Version: "0.4.1", + Ecosystem: "npm", + }, + Licenses: []models.License{"ISC"}, + LicenseViolations: []models.License{}, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/third/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.3.5", + Ecosystem: "npm", + }, + Licenses: []models.License{"ISC"}, + LicenseViolations: []models.License{}, + }, + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Licenses: []models.License{"ISC"}, + LicenseViolations: []models.License{}, + }, + }, + }, + }, + }, + }, + }, + { + name: "one source with one package and one license violation", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + ExperimentalAnalysisConfig: experimentalAnalysisConfig, + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Licenses: []models.License{"MIT"}, + LicenseViolations: []models.License{"MIT"}, + }, + }, + }, + }, + }, + }, + }, + { + name: "one source with one package and one license violation (dev)", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + ExperimentalAnalysisConfig: experimentalAnalysisConfig, + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + DepGroups: []string{"dev"}, + Licenses: []models.License{"MIT"}, + LicenseViolations: []models.License{"MIT"}, + }, + }, + }, + }, + }, + }, + }, + { + name: "two sources with packages, one license violation", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + ExperimentalAnalysisConfig: experimentalAnalysisConfig, + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Licenses: []models.License{"MIT"}, + LicenseViolations: []models.License{"MIT"}, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/second/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine2", + Version: "5.9.0", + Ecosystem: "npm", + }, + Licenses: []models.License{"ISC"}, + LicenseViolations: []models.License{}, + }, + }, + }, + }, + }, + }, + }, + { + name: "multiple sources with a mixed count of packages, some license violations", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + ExperimentalAnalysisConfig: experimentalAnalysisConfig, + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Licenses: []models.License{"MIT"}, + LicenseViolations: []models.License{"MIT"}, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/second/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine2", + Version: "3.2.5", + Ecosystem: "npm", + }, + Licenses: []models.License{"Apache-2.0"}, + LicenseViolations: []models.License{"Apache-2.0"}, + }, + { + Package: models.PackageInfo{ + Name: "mine3", + Version: "0.4.1", + Ecosystem: "npm", + }, + Licenses: []models.License{"ISC"}, + LicenseViolations: []models.License{}, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/third/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.3.5", + Ecosystem: "npm", + }, + Licenses: []models.License{"ISC"}, + LicenseViolations: []models.License{}, + }, + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Licenses: []models.License{"MIT"}, + LicenseViolations: []models.License{"MIT"}, + }, + }, + }, + }, + }, + }, + }, + { + name: "multiple sources with a mixed count of packages and groups, some license violations", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + ExperimentalAnalysisConfig: experimentalAnalysisConfig, + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + DepGroups: []string{"dev", "optional"}, + Licenses: []models.License{"MIT"}, + LicenseViolations: []models.License{"MIT"}, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/second/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine2", + Version: "3.2.5", + Ecosystem: "npm", + }, + DepGroups: []string{"dev", "optional"}, + Licenses: []models.License{"Apache-2.0"}, + LicenseViolations: []models.License{"Apache-2.0"}, + }, + { + Package: models.PackageInfo{ + Name: "mine3", + Version: "0.4.1", + Ecosystem: "npm", + }, + Licenses: []models.License{"ISC"}, + LicenseViolations: []models.License{}, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/third/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.3.5", + Ecosystem: "npm", + }, + Licenses: []models.License{"ISC"}, + LicenseViolations: []models.License{}, + }, + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + DepGroups: []string{"build"}, + Licenses: []models.License{"MIT"}, + LicenseViolations: []models.License{"MIT"}, + }, + }, + }, + }, + }, + }, + }, + { + name: "multiple sources with a mixed count of packages across ecosystems, some license violations", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + ExperimentalAnalysisConfig: experimentalAnalysisConfig, + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "Packagist", + }, + Licenses: []models.License{"MIT"}, + LicenseViolations: []models.License{"MIT"}, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/second/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine2", + Version: "3.2.5", + Ecosystem: "npm", + }, + Licenses: []models.License{"Apache-2.0"}, + LicenseViolations: []models.License{"Apache-2.0"}, + }, + { + Package: models.PackageInfo{ + Name: "mine3", + Version: "0.4.1", + Ecosystem: "npm", + }, + Licenses: []models.License{"ISC"}, + LicenseViolations: []models.License{}, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/third/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.3.5", + Ecosystem: "NuGet", + }, + Licenses: []models.License{"ISC"}, + LicenseViolations: []models.License{}, + }, + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "Packagist", + }, + DepGroups: []string{"dev"}, + Licenses: []models.License{"MIT"}, + LicenseViolations: []models.License{"MIT"}, + }, + }, + }, + }, + }, + }, + }, + { + name: "one source with one package and multiple license violations", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + ExperimentalAnalysisConfig: experimentalAnalysisConfig, + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Licenses: []models.License{"MIT", "Apache-2.0"}, + LicenseViolations: []models.License{"MIT", "Apache-2.0"}, + }, + }, + }, + }, + }, + }, + }, + { + name: "multiple sources with a mixed count of packages, some license violations", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Licenses: []models.License{"MIT", "Apache-2.0"}, + LicenseViolations: []models.License{"MIT"}, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/second/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine2", + Version: "3.2.5", + Ecosystem: "npm", + }, + Licenses: []models.License{"UNKNOWN"}, + LicenseViolations: []models.License{"UNKNOWN"}, + }, + { + Package: models.PackageInfo{ + Name: "mine3", + Version: "0.4.1", + Ecosystem: "npm", + }, + Licenses: []models.License{"Apache-2.0"}, + LicenseViolations: []models.License{}, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/third/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.3.5", + Ecosystem: "npm", + }, + Licenses: []models.License{"Apache-2.0"}, + LicenseViolations: []models.License{}, + }, + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Licenses: []models.License{"MIT"}, + LicenseViolations: []models.License{"MIT"}, + }, + }, + }, + }, + }, + }, + }, + } + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + + run(t, tt.args) + }) + } +} + +func testOutputWithMixedIssues(t *testing.T, run outputTestRunner) { + t.Helper() + + experimentalAnalysisConfig := models.ExperimentalAnalysisConfig{ + Licenses: models.ExperimentalLicenseConfig{Summary: false, Allowlist: []models.License{"ISC"}}, + } + + tests := []outputTestCase{ + { + name: "one source with one package, one vulnerability, and one license violation", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + ExperimentalAnalysisConfig: experimentalAnalysisConfig, + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Groups: []models.GroupInfo{{IDs: []string{"OSV-1"}}}, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-1", + Summary: "Something scary!", + Severity: []models.Severity{{Type: "high", Score: "1"}}, + }, + }, + Licenses: []models.License{"MIT"}, + LicenseViolations: []models.License{"MIT"}, + }, + }, + }, + }, + }, + }, + }, + { + name: "two sources with packages, one vulnerability, one license violation", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + ExperimentalAnalysisConfig: experimentalAnalysisConfig, + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Groups: []models.GroupInfo{{IDs: []string{"OSV-1"}}}, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-1", + Summary: "Something scary!", + Severity: []models.Severity{{Type: "high", Score: "1"}}, + }, + }, + Licenses: []models.License{"ISC"}, + LicenseViolations: []models.License{}, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/second/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine2", + Version: "5.9.0", + Ecosystem: "npm", + }, + Groups: []models.GroupInfo{}, + Vulnerabilities: models.Vulnerabilities{}, + Licenses: []models.License{"MIT"}, + LicenseViolations: []models.License{"MIT"}, + }, + }, + }, + }, + }, + }, + }, + { + name: "multiple sources with a mixed count of packages, some vulnerabilities and license violations", + args: outputTestCaseArgs{ + vulnResult: &models.VulnerabilityResults{ + ExperimentalAnalysisConfig: experimentalAnalysisConfig, + Results: []models.PackageSource{ + { + Source: models.SourceInfo{Path: "path/to/my/first/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Groups: []models.GroupInfo{{IDs: []string{"OSV-1"}}}, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-1", + Summary: "Something scary!", + Severity: []models.Severity{{Type: "high", Score: "1"}}, + }, + }, + Licenses: []models.License{"MIT"}, + LicenseViolations: []models.License{"MIT"}, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/second/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine2", + Version: "3.2.5", + Ecosystem: "npm", + }, + Groups: []models.GroupInfo{{IDs: []string{"OSV-2"}}}, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-2", + Summary: "Something less scary!", + Severity: []models.Severity{{Type: "low", Score: "1"}}, + }, + }, + Licenses: []models.License{"ISC"}, + LicenseViolations: []models.License{}, + }, + { + Package: models.PackageInfo{ + Name: "mine3", + Version: "0.4.1", + Ecosystem: "npm", + }, + Vulnerabilities: models.Vulnerabilities{}, + Licenses: []models.License{"ISC"}, + LicenseViolations: []models.License{}, + }, + }, + }, + { + Source: models.SourceInfo{Path: "path/to/my/third/lockfile"}, + Packages: []models.PackageVulns{ + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.3.5", + Ecosystem: "npm", + }, + Vulnerabilities: models.Vulnerabilities{}, + Licenses: []models.License{"MIT"}, + LicenseViolations: []models.License{"MIT"}, + }, + { + Package: models.PackageInfo{ + Name: "mine1", + Version: "1.2.3", + Ecosystem: "npm", + }, + Groups: []models.GroupInfo{{IDs: []string{"OSV-1"}}}, + Vulnerabilities: models.Vulnerabilities{ + { + ID: "OSV-1", + Summary: "Something scary!", + Severity: []models.Severity{{Type: "high", Score: "1"}}, + }, + }, + Licenses: []models.License{"Apache-2.0"}, + LicenseViolations: []models.License{"Apache-2.0"}, + }, + }, + }, + }, + }, + }, + }, + } + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + + run(t, tt.args) + }) + } +} diff --git a/internal/output/machinejson_test.go b/internal/output/machinejson_test.go new file mode 100644 index 00000000000..c0225ead7bb --- /dev/null +++ b/internal/output/machinejson_test.go @@ -0,0 +1,60 @@ +package output_test + +import ( + "bytes" + "testing" + + "github.com/google/osv-scanner/internal/output" + "github.com/google/osv-scanner/internal/testutility" +) + +func TestPrintJSONResults_WithVulnerabilities(t *testing.T) { + t.Parallel() + + testOutputWithVulnerabilities(t, func(t *testing.T, args outputTestCaseArgs) { + t.Helper() + + outputWriter := &bytes.Buffer{} + err := output.PrintJSONResults(args.vulnResult, outputWriter) + + if err != nil { + t.Errorf("Error writing JSON output: %s", err) + } + + testutility.NewSnapshot().MatchText(t, outputWriter.String()) + }) +} + +func TestPrintJSONResults_WithLicenseViolations(t *testing.T) { + t.Parallel() + + testOutputWithLicenseViolations(t, func(t *testing.T, args outputTestCaseArgs) { + t.Helper() + + outputWriter := &bytes.Buffer{} + err := output.PrintJSONResults(args.vulnResult, outputWriter) + + if err != nil { + t.Errorf("Error writing JSON output: %s", err) + } + + testutility.NewSnapshot().MatchText(t, outputWriter.String()) + }) +} + +func TestPrintJSONResults_WithMixedIssues(t *testing.T) { + t.Parallel() + + testOutputWithMixedIssues(t, func(t *testing.T, args outputTestCaseArgs) { + t.Helper() + + outputWriter := &bytes.Buffer{} + err := output.PrintJSONResults(args.vulnResult, outputWriter) + + if err != nil { + t.Errorf("Error writing JSON output: %s", err) + } + + testutility.NewSnapshot().MatchText(t, outputWriter.String()) + }) +} diff --git a/internal/output/markdowntable_test.go b/internal/output/markdowntable_test.go new file mode 100644 index 00000000000..046fc94d019 --- /dev/null +++ b/internal/output/markdowntable_test.go @@ -0,0 +1,48 @@ +package output_test + +import ( + "bytes" + "testing" + + "github.com/google/osv-scanner/internal/output" + "github.com/google/osv-scanner/internal/testutility" +) + +func TestPrintMarkdownTableResults_WithVulnerabilities(t *testing.T) { + t.Parallel() + + testOutputWithVulnerabilities(t, func(t *testing.T, args outputTestCaseArgs) { + t.Helper() + + outputWriter := &bytes.Buffer{} + output.PrintMarkdownTableResults(args.vulnResult, outputWriter) + + testutility.NewSnapshot().MatchText(t, outputWriter.String()) + }) +} + +func TestPrintMarkdownTableResults_WithLicenseViolations(t *testing.T) { + t.Parallel() + + testOutputWithLicenseViolations(t, func(t *testing.T, args outputTestCaseArgs) { + t.Helper() + + outputWriter := &bytes.Buffer{} + output.PrintMarkdownTableResults(args.vulnResult, outputWriter) + + testutility.NewSnapshot().MatchText(t, outputWriter.String()) + }) +} + +func TestPrintMarkdownTableResults_WithMixedIssues(t *testing.T) { + t.Parallel() + + testOutputWithMixedIssues(t, func(t *testing.T, args outputTestCaseArgs) { + t.Helper() + + outputWriter := &bytes.Buffer{} + output.PrintMarkdownTableResults(args.vulnResult, outputWriter) + + testutility.NewSnapshot().MatchText(t, outputWriter.String()) + }) +} diff --git a/internal/output/sarif_test.go b/internal/output/sarif_test.go index 1181a0701dc..7773e664d88 100644 --- a/internal/output/sarif_test.go +++ b/internal/output/sarif_test.go @@ -86,3 +86,69 @@ func TestPrintSARIFReport(t *testing.T) { }) } } + +func TestPrintSARIFReport_WithVulnerabilities(t *testing.T) { + t.Parallel() + + testOutputWithVulnerabilities(t, func(t *testing.T, args outputTestCaseArgs) { + t.Helper() + + outputWriter := &bytes.Buffer{} + err := output.PrintSARIFReport(args.vulnResult, outputWriter) + + if err != nil { + t.Errorf("Error writing SARIF output: %s", err) + } + + testutility.NewSnapshot().WithWindowsReplacements( + map[string]string{ + "path\\\\to\\\\my\\\\first/osv-scanner.toml": "path/to/my/first/osv-scanner.toml", + "path\\\\to\\\\my\\\\second/osv-scanner.toml": "path/to/my/second/osv-scanner.toml", + "path\\\\to\\\\my\\\\third/osv-scanner.toml": "path/to/my/third/osv-scanner.toml", + }).MatchText(t, outputWriter.String()) + }) +} + +func TestPrintSARIFReport_WithLicenseViolations(t *testing.T) { + t.Parallel() + + testOutputWithLicenseViolations(t, func(t *testing.T, args outputTestCaseArgs) { + t.Helper() + + outputWriter := &bytes.Buffer{} + err := output.PrintSARIFReport(args.vulnResult, outputWriter) + + if err != nil { + t.Errorf("Error writing SARIF output: %s", err) + } + + testutility.NewSnapshot().WithWindowsReplacements( + map[string]string{ + "path\\\\to\\\\my\\\\first/osv-scanner.toml": "path/to/my/first/osv-scanner.toml", + "path\\\\to\\\\my\\\\second/osv-scanner.toml": "path/to/my/second/osv-scanner.toml", + "path\\\\to\\\\my\\\\third/osv-scanner.toml": "path/to/my/third/osv-scanner.toml", + }).MatchText(t, outputWriter.String()) + }) +} + +func TestPrintSARIFReport_WithMixedIssues(t *testing.T) { + t.Parallel() + + testOutputWithMixedIssues(t, func(t *testing.T, args outputTestCaseArgs) { + t.Helper() + + outputWriter := &bytes.Buffer{} + err := output.PrintSARIFReport(args.vulnResult, outputWriter) + + if err != nil { + t.Errorf("Error writing SARIF output: %s", err) + } + + testutility.NewSnapshot().WithWindowsReplacements( + map[string]string{ + "path\\\\to\\\\my\\\\first/osv-scanner.toml": "path/to/my/first/osv-scanner.toml", + "path\\\\to\\\\my\\\\second/osv-scanner.toml": "path/to/my/second/osv-scanner.toml", + "path\\\\to\\\\my\\\\third/osv-scanner.toml": "path/to/my/third/osv-scanner.toml", + }).MatchText(t, outputWriter.String()) + }) +} diff --git a/internal/output/table_test.go b/internal/output/table_test.go new file mode 100644 index 00000000000..45774bc08b2 --- /dev/null +++ b/internal/output/table_test.go @@ -0,0 +1,127 @@ +package output_test + +import ( + "bytes" + "testing" + + "github.com/google/osv-scanner/internal/output" + "github.com/google/osv-scanner/internal/testutility" + "github.com/jedib0t/go-pretty/v6/text" +) + +func TestPrintTableResults_StandardTerminalWidth_WithVulnerabilities(t *testing.T) { + t.Parallel() + + testOutputWithVulnerabilities(t, func(t *testing.T, args outputTestCaseArgs) { + t.Helper() + + outputWriter := &bytes.Buffer{} + output.PrintTableResults(args.vulnResult, outputWriter, 80) + + testutility.NewSnapshot().MatchText(t, text.StripEscape(outputWriter.String())) + }) +} + +func TestPrintTableResults_StandardTerminalWidth_WithLicenseViolations(t *testing.T) { + t.Parallel() + + testOutputWithLicenseViolations(t, func(t *testing.T, args outputTestCaseArgs) { + t.Helper() + + outputWriter := &bytes.Buffer{} + output.PrintTableResults(args.vulnResult, outputWriter, 80) + + testutility.NewSnapshot().MatchText(t, text.StripEscape(outputWriter.String())) + }) +} + +func TestPrintTableResults_StandardTerminalWidth_WithMixedIssues(t *testing.T) { + t.Parallel() + + testOutputWithMixedIssues(t, func(t *testing.T, args outputTestCaseArgs) { + t.Helper() + + outputWriter := &bytes.Buffer{} + output.PrintTableResults(args.vulnResult, outputWriter, 80) + + testutility.NewSnapshot().MatchText(t, text.StripEscape(outputWriter.String())) + }) +} + +func TestPrintTableResults_LongTerminalWidth_WithVulnerabilities(t *testing.T) { + t.Parallel() + + testOutputWithVulnerabilities(t, func(t *testing.T, args outputTestCaseArgs) { + t.Helper() + + outputWriter := &bytes.Buffer{} + output.PrintTableResults(args.vulnResult, outputWriter, 800) + + testutility.NewSnapshot().MatchText(t, text.StripEscape(outputWriter.String())) + }) +} + +func TestPrintTableResults_LongTerminalWidth_WithLicenseViolations(t *testing.T) { + t.Parallel() + + testOutputWithLicenseViolations(t, func(t *testing.T, args outputTestCaseArgs) { + t.Helper() + + outputWriter := &bytes.Buffer{} + output.PrintTableResults(args.vulnResult, outputWriter, 800) + + testutility.NewSnapshot().MatchText(t, text.StripEscape(outputWriter.String())) + }) +} + +func TestPrintTableResults_LongTerminalWidth_WithMixedIssues(t *testing.T) { + t.Parallel() + + testOutputWithMixedIssues(t, func(t *testing.T, args outputTestCaseArgs) { + t.Helper() + + outputWriter := &bytes.Buffer{} + output.PrintTableResults(args.vulnResult, outputWriter, 800) + + testutility.NewSnapshot().MatchText(t, text.StripEscape(outputWriter.String())) + }) +} + +func TestPrintTableResults_NoTerminalWidth_WithVulnerabilities(t *testing.T) { + t.Parallel() + + testOutputWithVulnerabilities(t, func(t *testing.T, args outputTestCaseArgs) { + t.Helper() + + outputWriter := &bytes.Buffer{} + output.PrintTableResults(args.vulnResult, outputWriter, -1) + + testutility.NewSnapshot().MatchText(t, outputWriter.String()) + }) +} + +func TestPrintTableResults_NoTerminalWidth_WithLicenseViolations(t *testing.T) { + t.Parallel() + + testOutputWithLicenseViolations(t, func(t *testing.T, args outputTestCaseArgs) { + t.Helper() + + outputWriter := &bytes.Buffer{} + output.PrintTableResults(args.vulnResult, outputWriter, -1) + + testutility.NewSnapshot().MatchText(t, outputWriter.String()) + }) +} + +func TestPrintTableResults_NoTerminalWidth_WithMixedIssues(t *testing.T) { + t.Parallel() + + testOutputWithMixedIssues(t, func(t *testing.T, args outputTestCaseArgs) { + t.Helper() + + outputWriter := &bytes.Buffer{} + output.PrintTableResults(args.vulnResult, outputWriter, -1) + + testutility.NewSnapshot().MatchText(t, outputWriter.String()) + }) +} From fc58bedd5edd088006b2fba369c46d2108f5f8dd Mon Sep 17 00:00:00 2001 From: Rex P <106129829+another-rex@users.noreply.github.com> Date: Mon, 27 May 2024 10:54:29 +1000 Subject: [PATCH 48/68] Update test snapshots (#992) Update test snapshots after merging #937 . Also seems to cleanup old remediation in_place_test snapshots --- internal/output/__snapshots__/sarif_test.snap | 66 +- .../__snapshots__/in_place_test.snap | 584 ------------------ 2 files changed, 33 insertions(+), 617 deletions(-) diff --git a/internal/output/__snapshots__/sarif_test.snap b/internal/output/__snapshots__/sarif_test.snap index 82dc2e44ff3..629d95fb3d9 100755 --- a/internal/output/__snapshots__/sarif_test.snap +++ b/internal/output/__snapshots__/sarif_test.snap @@ -149,7 +149,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.2" + "version": "1.7.3" } }, "results": [] @@ -170,7 +170,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.2" + "version": "1.7.3" } }, "results": [] @@ -191,7 +191,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.2" + "version": "1.7.3" } }, "results": [] @@ -212,7 +212,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.2" + "version": "1.7.3" } }, "results": [] @@ -233,7 +233,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.2" + "version": "1.7.3" } }, "results": [] @@ -254,7 +254,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.2" + "version": "1.7.3" } }, "results": [] @@ -275,7 +275,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.2" + "version": "1.7.3" } }, "results": [] @@ -296,7 +296,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.2" + "version": "1.7.3" } }, "results": [] @@ -317,7 +317,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.2" + "version": "1.7.3" } }, "results": [] @@ -338,7 +338,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.2" + "version": "1.7.3" } }, "results": [] @@ -359,7 +359,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.2" + "version": "1.7.3" } }, "results": [] @@ -380,7 +380,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.2" + "version": "1.7.3" } }, "results": [] @@ -401,7 +401,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.2" + "version": "1.7.3" } }, "results": [] @@ -422,7 +422,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.2" + "version": "1.7.3" } }, "results": [] @@ -443,7 +443,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.2" + "version": "1.7.3" } }, "results": [] @@ -501,7 +501,7 @@ } } ], - "version": "1.7.2" + "version": "1.7.3" } }, "artifacts": [ @@ -613,7 +613,7 @@ } } ], - "version": "1.7.2" + "version": "1.7.3" } }, "artifacts": [ @@ -679,7 +679,7 @@ } } ], - "version": "1.7.2" + "version": "1.7.3" } }, "artifacts": [ @@ -799,7 +799,7 @@ } } ], - "version": "1.7.2" + "version": "1.7.3" } }, "artifacts": [ @@ -1010,7 +1010,7 @@ } } ], - "version": "1.7.2" + "version": "1.7.3" } }, "artifacts": [ @@ -1148,7 +1148,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.2" + "version": "1.7.3" } }, "results": [] @@ -1206,7 +1206,7 @@ } } ], - "version": "1.7.2" + "version": "1.7.3" } }, "artifacts": [ @@ -1372,7 +1372,7 @@ } } ], - "version": "1.7.2" + "version": "1.7.3" } }, "artifacts": [ @@ -1510,7 +1510,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.2" + "version": "1.7.3" } }, "results": [] @@ -1531,7 +1531,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.2" + "version": "1.7.3" } }, "results": [] @@ -1552,7 +1552,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.2" + "version": "1.7.3" } }, "results": [] @@ -1573,7 +1573,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.2" + "version": "1.7.3" } }, "results": [] @@ -1613,7 +1613,7 @@ } } ], - "version": "1.7.2" + "version": "1.7.3" } }, "artifacts": [ @@ -1679,7 +1679,7 @@ } } ], - "version": "1.7.2" + "version": "1.7.3" } }, "artifacts": [ @@ -1746,7 +1746,7 @@ } } ], - "version": "1.7.2" + "version": "1.7.3" } }, "artifacts": [ @@ -1847,7 +1847,7 @@ } } ], - "version": "1.7.2" + "version": "1.7.3" } }, "artifacts": [ @@ -1930,7 +1930,7 @@ } } ], - "version": "1.7.2" + "version": "1.7.3" } }, "artifacts": [ @@ -1996,7 +1996,7 @@ } } ], - "version": "1.7.2" + "version": "1.7.3" } }, "artifacts": [ diff --git a/internal/remediation/__snapshots__/in_place_test.snap b/internal/remediation/__snapshots__/in_place_test.snap index 0333e102106..e4b0654f02d 100755 --- a/internal/remediation/__snapshots__/in_place_test.snap +++ b/internal/remediation/__snapshots__/in_place_test.snap @@ -1,588 +1,4 @@ -[TestComputeInPlacePatches - 1] -{ - "Patches": [ - { - "Patch": { - "Pkg": { - "System": 3, - "Name": "lodash" - }, - "OrigVersion": "4.17.20", - "NewVersion": "4.17.21" - }, - "Resolved": [ - { - "ID": "GHSA-29mw-wpgm-hmr9", - "AffectedNodes": [ - 338 - ] - }, - { - "ID": "GHSA-35jh-r3h4-6jhm", - "AffectedNodes": [ - 338 - ] - } - ] - }, - { - "Patch": { - "Pkg": { - "System": 3, - "Name": "minimist" - }, - "OrigVersion": "1.2.0", - "NewVersion": "1.2.8" - }, - "Resolved": [ - { - "ID": "GHSA-vh95-rmgr-6w4m", - "AffectedNodes": [ - 357 - ] - }, - { - "ID": "GHSA-xvch-5gv4-984h", - "AffectedNodes": [ - 357 - ] - } - ] - }, - { - "Patch": { - "Pkg": { - "System": 3, - "Name": "acorn" - }, - "OrigVersion": "5.7.3", - "NewVersion": "5.4.1" - }, - "Resolved": [ - { - "ID": "GHSA-6chw-6frg-f759", - "AffectedNodes": [ - 620 - ] - } - ] - }, - { - "Patch": { - "Pkg": { - "System": 3, - "Name": "acorn" - }, - "OrigVersion": "6.0.2", - "NewVersion": "6.4.2" - }, - "Resolved": [ - { - "ID": "GHSA-6chw-6frg-f759", - "AffectedNodes": [ - 133, - 649 - ] - } - ] - }, - { - "Patch": { - "Pkg": { - "System": 3, - "Name": "acorn" - }, - "OrigVersion": "7.1.0", - "NewVersion": "7.4.1" - }, - "Resolved": [ - { - "ID": "GHSA-6chw-6frg-f759", - "AffectedNodes": [ - 595 - ] - } - ] - }, - { - "Patch": { - "Pkg": { - "System": 3, - "Name": "ansi-regex" - }, - "OrigVersion": "3.0.0", - "NewVersion": "3.0.1" - }, - "Resolved": [ - { - "ID": "GHSA-93q8-gq69-wqmw", - "AffectedNodes": [ - 564, - 644 - ] - } - ] - }, - { - "Patch": { - "Pkg": { - "System": 3, - "Name": "dat.gui" - }, - "OrigVersion": "0.7.3", - "NewVersion": "0.7.9" - }, - "Resolved": [ - { - "ID": "GHSA-chwr-hf3w-c984", - "AffectedNodes": [ - 208 - ] - } - ] - }, - { - "Patch": { - "Pkg": { - "System": 3, - "Name": "get-func-name" - }, - "OrigVersion": "2.0.0", - "NewVersion": "2.0.2" - }, - "Resolved": [ - { - "ID": "GHSA-4q6p-r6v2-jvc5", - "AffectedNodes": [ - 264 - ] - } - ] - }, - { - "Patch": { - "Pkg": { - "System": 3, - "Name": "glob-parent" - }, - "OrigVersion": "5.0.0", - "NewVersion": "5.1.2" - }, - "Resolved": [ - { - "ID": "GHSA-ww39-953v-wcq6", - "AffectedNodes": [ - 269 - ] - } - ] - }, - { - "Patch": { - "Pkg": { - "System": 3, - "Name": "json5" - }, - "OrigVersion": "2.1.0", - "NewVersion": "2.2.3" - }, - "Resolved": [ - { - "ID": "GHSA-9c47-m6qq-7p4h", - "AffectedNodes": [ - 329 - ] - } - ] - }, - { - "Patch": { - "Pkg": { - "System": 3, - "Name": "minimist" - }, - "OrigVersion": "1.2.5", - "NewVersion": "1.2.8" - }, - "Resolved": [ - { - "ID": "GHSA-xvch-5gv4-984h", - "AffectedNodes": [ - 580 - ] - } - ] - }, - { - "Patch": { - "Pkg": { - "System": 3, - "Name": "node-fetch" - }, - "OrigVersion": "2.6.6", - "NewVersion": "2.7.0" - }, - "Resolved": [ - { - "ID": "GHSA-r683-j2x4-v87g", - "AffectedNodes": [ - 586, - 591, - 634 - ] - } - ] - }, - { - "Patch": { - "Pkg": { - "System": 3, - "Name": "path-parse" - }, - "OrigVersion": "1.0.6", - "NewVersion": "1.0.7" - }, - "Resolved": [ - { - "ID": "GHSA-hj48-42vr-x3v9", - "AffectedNodes": [ - 398 - ] - } - ] - }, - { - "Patch": { - "Pkg": { - "System": 3, - "Name": "pathval" - }, - "OrigVersion": "1.1.0", - "NewVersion": "1.1.1" - }, - "Resolved": [ - { - "ID": "GHSA-g6ww-v8xp-vmwg", - "AffectedNodes": [ - 400 - ] - } - ] - }, - { - "Patch": { - "Pkg": { - "System": 3, - "Name": "qs" - }, - "OrigVersion": "6.5.2", - "NewVersion": "6.5.3" - }, - "Resolved": [ - { - "ID": "GHSA-hrpp-h998-j3pp", - "AffectedNodes": [ - 422 - ] - } - ] - }, - { - "Patch": { - "Pkg": { - "System": 3, - "Name": "semver" - }, - "OrigVersion": "5.5.1", - "NewVersion": "5.7.2" - }, - "Resolved": [ - { - "ID": "GHSA-c2qf-rxjj-qqgw", - "AffectedNodes": [ - 449 - ] - } - ] - }, - { - "Patch": { - "Pkg": { - "System": 3, - "Name": "semver" - }, - "OrigVersion": "5.6.0", - "NewVersion": "5.7.2" - }, - "Resolved": [ - { - "ID": "GHSA-c2qf-rxjj-qqgw", - "AffectedNodes": [ - 539, - 572 - ] - } - ] - }, - { - "Patch": { - "Pkg": { - "System": 3, - "Name": "semver" - }, - "OrigVersion": "6.3.0", - "NewVersion": "6.3.1" - }, - "Resolved": [ - { - "ID": "GHSA-c2qf-rxjj-qqgw", - "AffectedNodes": [ - 571 - ] - } - ] - }, - { - "Patch": { - "Pkg": { - "System": 3, - "Name": "ws" - }, - "OrigVersion": "6.2.1", - "NewVersion": "6.2.2" - }, - "Resolved": [ - { - "ID": "GHSA-6fc8-4gx4-v693", - "AffectedNodes": [ - 513 - ] - } - ] - }, - { - "Patch": { - "Pkg": { - "System": 3, - "Name": "ws" - }, - "OrigVersion": "7.1.2", - "NewVersion": "7.5.9" - }, - "Resolved": [ - { - "ID": "GHSA-6fc8-4gx4-v693", - "AffectedNodes": [ - 609 - ] - } - ] - }, - { - "Patch": { - "Pkg": { - "System": 3, - "Name": "y18n" - }, - "OrigVersion": "4.0.0", - "NewVersion": "4.0.3" - }, - "Resolved": [ - { - "ID": "GHSA-c4w7-xm78-47vh", - "AffectedNodes": [ - 518 - ] - } - ] - } - ], - "Unfixable": [ - { - "ID": "GHSA-2r2c-g63r-vccr", - "AffectedNodes": [ - 366 - ] - }, - { - "ID": "GHSA-4wf5-vphf-c2xc", - "AffectedNodes": [ - 470 - ] - }, - { - "ID": "GHSA-566m-qj78-rww5", - "AffectedNodes": [ - 406 - ] - }, - { - "ID": "GHSA-5rrq-pxf6-6jx5", - "AffectedNodes": [ - 366 - ] - }, - { - "ID": "GHSA-67hx-6x53-jw92", - "AffectedNodes": [ - 71 - ] - }, - { - "ID": "GHSA-72xf-g2v4-qvf3", - "AffectedNodes": [ - 475 - ] - }, - { - "ID": "GHSA-72xf-g2v4-qvf3", - "AffectedNodes": [ - 607 - ] - }, - { - "ID": "GHSA-72xf-g2v4-qvf3", - "AffectedNodes": [ - 652 - ] - }, - { - "ID": "GHSA-7fh5-64p2-3v2j", - "AffectedNodes": [ - 406 - ] - }, - { - "ID": "GHSA-896r-f27r-55mw", - "AffectedNodes": [ - 326 - ] - }, - { - "ID": "GHSA-8fr3-hfg3-gpgp", - "AffectedNodes": [ - 366 - ] - }, - { - "ID": "GHSA-cfm4-qjh2-4765", - "AffectedNodes": [ - 366 - ] - }, - { - "ID": "GHSA-f4c9-cqv8-9v98", - "AffectedNodes": [ - 323 - ] - }, - { - "ID": "GHSA-f4c9-cqv8-9v98", - "AffectedNodes": [ - 601 - ] - }, - { - "ID": "GHSA-f8q6-p94x-37v3", - "AffectedNodes": [ - 356 - ] - }, - { - "ID": "GHSA-g954-5hwp-pp24", - "AffectedNodes": [ - 415 - ] - }, - { - "ID": "GHSA-gf8q-jrpm-jvxq", - "AffectedNodes": [ - 366 - ] - }, - { - "ID": "GHSA-h755-8qp9-cq85", - "AffectedNodes": [ - 415 - ] - }, - { - "ID": "GHSA-hwj9-h5mp-3pm3", - "AffectedNodes": [ - 406 - ] - }, - { - "ID": "GHSA-p8p7-x288-28g6", - "AffectedNodes": [ - 436 - ] - }, - { - "ID": "GHSA-p9pc-299p-vxgp", - "AffectedNodes": [ - 521 - ] - }, - { - "ID": "GHSA-pfq8-rq6v-vf5m", - "AffectedNodes": [ - 291 - ] - }, - { - "ID": "GHSA-r683-j2x4-v87g", - "AffectedNodes": [ - 365 - ] - }, - { - "ID": "GHSA-v88g-cgmw-v5xw", - "AffectedNodes": [ - 138 - ] - }, - { - "ID": "GHSA-vh5w-fg69-rc8m", - "AffectedNodes": [ - 278 - ] - }, - { - "ID": "GHSA-vh95-rmgr-6w4m", - "AffectedNodes": [ - 615 - ] - }, - { - "ID": "GHSA-w8qv-6jwh-64r5", - "AffectedNodes": [ - 166 - ] - }, - { - "ID": "GHSA-w8qv-6jwh-64r5", - "AffectedNodes": [ - 560 - ] - }, - { - "ID": "GHSA-x4jg-mjrx-434g", - "AffectedNodes": [ - 366 - ] - }, - { - "ID": "GHSA-xvch-5gv4-984h", - "AffectedNodes": [ - 615 - ] - } - ] -} ---- - [TestComputeInPlacePatches/npm-santatracker - 1] { "Patches": [ From 8fd05b44adfc20f7419882d82491228a73b2bb09 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 27 May 2024 04:09:26 +0200 Subject: [PATCH 49/68] chore(deps): update alpine docker tag to v3.20 (#993) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | alpine | final | minor | `3.19` -> `3.20` | --- ### Configuration 📅 **Schedule**: Branch creation - "before 6am on monday" in timezone Australia/Sydney, Automerge - At any time (no schedule defined). đŸšĻ **Automerge**: Disabled by config. Please merge this manually once you are satisfied. â™ģ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/google/osv-scanner). --- Dockerfile | 2 +- action.dockerfile | 2 +- goreleaser-action.dockerfile | 2 +- goreleaser.dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index a4f20767f9e..4a811fba3ca 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,7 +21,7 @@ RUN go mod download COPY ./ ./ RUN go build -o osv-scanner ./cmd/osv-scanner/ -FROM alpine:3.19@sha256:c5b1261d6d3e43071626931fc004f70149baeba2c8ec672bd4f27761f8e1ad6b +FROM alpine:3.20@sha256:77726ef6b57ddf65bb551896826ec38bc3e53f75cdde31354fbffb4f25238ebd RUN apk --no-cache add ca-certificates git && \ git config --global --add safe.directory '*' diff --git a/action.dockerfile b/action.dockerfile index 769423e76fd..6e0c71e2151 100644 --- a/action.dockerfile +++ b/action.dockerfile @@ -25,7 +25,7 @@ COPY ./ /src/ RUN go build -o osv-scanner ./cmd/osv-scanner/ RUN go build -o osv-reporter ./cmd/osv-reporter/ -FROM alpine:3.19@sha256:c5b1261d6d3e43071626931fc004f70149baeba2c8ec672bd4f27761f8e1ad6b +FROM alpine:3.20@sha256:77726ef6b57ddf65bb551896826ec38bc3e53f75cdde31354fbffb4f25238ebd RUN apk --no-cache add \ ca-certificates \ git \ diff --git a/goreleaser-action.dockerfile b/goreleaser-action.dockerfile index 7a09de2116b..15436d96ea6 100644 --- a/goreleaser-action.dockerfile +++ b/goreleaser-action.dockerfile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM alpine:3.19@sha256:c5b1261d6d3e43071626931fc004f70149baeba2c8ec672bd4f27761f8e1ad6b +FROM alpine:3.20@sha256:77726ef6b57ddf65bb551896826ec38bc3e53f75cdde31354fbffb4f25238ebd RUN apk --no-cache add \ ca-certificates \ git \ diff --git a/goreleaser.dockerfile b/goreleaser.dockerfile index 9f4644cca26..3c26e9a2d2b 100644 --- a/goreleaser.dockerfile +++ b/goreleaser.dockerfile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM alpine:3.19@sha256:c5b1261d6d3e43071626931fc004f70149baeba2c8ec672bd4f27761f8e1ad6b +FROM alpine:3.20@sha256:77726ef6b57ddf65bb551896826ec38bc3e53f75cdde31354fbffb4f25238ebd RUN apk add --no-cache \ ca-certificates \ From b178a885a11dc9eefd8cc8adb2ce253e22dfd3d9 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 27 May 2024 04:24:14 +0200 Subject: [PATCH 50/68] fix(deps): update osv-scanner minor (#994) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Renovate + Also Remove/updates some deprecated function calls [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | Type | Update | |---|---|---|---|---|---|---|---| | [github.com/BurntSushi/toml](https://togithub.com/BurntSushi/toml) | `v1.3.2` -> `v1.4.0` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fBurntSushi%2ftoml/v1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fBurntSushi%2ftoml/v1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fBurntSushi%2ftoml/v1.3.2/v1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fBurntSushi%2ftoml/v1.3.2/v1.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | require | minor | | [github.com/charmbracelet/bubbletea](https://togithub.com/charmbracelet/bubbletea) | `v0.26.2` -> `v0.26.3` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fcharmbracelet%2fbubbletea/v0.26.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fcharmbracelet%2fbubbletea/v0.26.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fcharmbracelet%2fbubbletea/v0.26.2/v0.26.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fcharmbracelet%2fbubbletea/v0.26.2/v0.26.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | require | patch | | [github.com/charmbracelet/lipgloss](https://togithub.com/charmbracelet/lipgloss) | `v0.10.0` -> `v0.11.0` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fcharmbracelet%2flipgloss/v0.11.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fcharmbracelet%2flipgloss/v0.11.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fcharmbracelet%2flipgloss/v0.10.0/v0.11.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fcharmbracelet%2flipgloss/v0.10.0/v0.11.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | require | minor | | golang.org/x/exp | `9bf2ced` -> `4c93da0` | [![age](https://developer.mend.io/api/mc/badges/age/go/golang.org%2fx%2fexp/v0.0.0-20240525044651-4c93da0ed11d?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/golang.org%2fx%2fexp/v0.0.0-20240525044651-4c93da0ed11d?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/golang.org%2fx%2fexp/v0.0.0-20240506185415-9bf2ced13842/v0.0.0-20240525044651-4c93da0ed11d?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/golang.org%2fx%2fexp/v0.0.0-20240506185415-9bf2ced13842/v0.0.0-20240525044651-4c93da0ed11d?slim=true)](https://docs.renovatebot.com/merge-confidence/) | require | digest | --- ### Release Notes
BurntSushi/toml (github.com/BurntSushi/toml) ### [`v1.4.0`](https://togithub.com/BurntSushi/toml/releases/tag/v1.4.0) [Compare Source](https://togithub.com/BurntSushi/toml/compare/v1.3.2...v1.4.0) This version requires Go 1.18 - Add toml.Marshal() ([#​405](https://togithub.com/BurntSushi/toml/issues/405)) - Require 2-digit hour ([#​320](https://togithub.com/BurntSushi/toml/issues/320)) - Wrap UnmarshalTOML() and UnmarshalText() return values in ParseError for position information ([#​398](https://togithub.com/BurntSushi/toml/issues/398)) - Fix inline tables with dotted keys inside inline arrays (e.g. `k=[{a.b=1}]`) ([#​400](https://togithub.com/BurntSushi/toml/issues/400))
charmbracelet/bubbletea (github.com/charmbracelet/bubbletea) ### [`v0.26.3`](https://togithub.com/charmbracelet/bubbletea/releases/tag/v0.26.3) [Compare Source](https://togithub.com/charmbracelet/bubbletea/compare/v0.26.2...v0.26.3) This is a patch release that prevents `tea.WindowSizeMsg`s from being fired during altscreen changes on Windows. This was due to the fact that Windows emits a `window-size-event` on altscreen changes even if the size hand’t changed. Now, we cache the window-size and compare before sending the message to the `Model`. #### What's Changed - Prevent multiple window-size-events from firing on Windows by [@​aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/bubbletea/pull/1021](https://togithub.com/charmbracelet/bubbletea/pull/1021) - refactor: use x/term and x/ansi for renderer sequences by [@​aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/bubbletea/pull/962](https://togithub.com/charmbracelet/bubbletea/pull/962) **Full Changelog**: https://github.com/charmbracelet/bubbletea/compare/v0.26.2...v0.26.3 *** The Charm logo Thoughts? Questions? We love hearing from you. Feel free to reach out on [Twitter](https://twitter.com/charmcli), [The Fediverse](https://mastodon.social/@​charmcli), or [Discord](https://charm.sh/chat).
charmbracelet/lipgloss (github.com/charmbracelet/lipgloss) ### [`v0.11.0`](https://togithub.com/charmbracelet/lipgloss/releases/tag/v0.11.0) [Compare Source](https://togithub.com/charmbracelet/lipgloss/compare/v0.10.0...v0.11.0) ### Immutable Styles and Raw Speed, Baby So! The big news in this release is: - `Style` methods will now *always* return new styles - `Style` and ANSI operations under the hood are faster There are also a handful of great lil' bug fixes. Read on for more. #### Immutable Styles Every `Style` method now returns a completely new style with its own underlying data structure no matter what. This means working with Styles is a lot easier. No more need for `Copy()`! ```go // Before s := lipgloss.NewStyle().Bold(true) newStyle := s.Copy() // After s := lipgloss.NewStyle().Bold(true) newStyle := s // this is a true copy ``` Okay, but why are styles easier to work with now? Consider this: ```go // Before baseStyle := lipgloss.NewStyle().Background(lipgloss.Color("59")) styleAtRuntime := baseStyle.Copy().Width(m.Width) // After baseStyle := lipgloss.NewStyle().Padding(1, 2) styleAtRuntime := baseStyle.Width(m.Width) ``` It might seem small, but eliminating the risk of mutations in persistent styles in an enormous usability improvement. ##### How to upgrade There's nothing to do, however `Style.Copy()` is now deprecated and only returns itself, so you can just remove `Style.Copy()` calls. If you need to *just* copy a style without any changes to it you can simply `b := a`. #### Faster ANSI Sometimes watch companies brag about their "in-house" watch movement. Well, now we're bragging about our in-house-amazing [`x/ansi`](https://togithub.com/charmbracelet/x/tree/main/ansi) library by our own [@​aymanbagabas](https://togithub.com/aymanbagabas). It's a fine-tuned, low-level way to manage ANSI sequencing and, because we're pretty nerdy, we’re *super* excited about it. *** #### What's Changed ##### New! - always return copies of styles by [@​aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/lipgloss/pull/276](https://togithub.com/charmbracelet/lipgloss/pull/276) ##### Changed - switch to term/ansi for text manipulation by [@​aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/lipgloss/pull/268](https://togithub.com/charmbracelet/lipgloss/pull/268) - replace stripansi with ansi.Strip in table by [@​aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/lipgloss/pull/271](https://togithub.com/charmbracelet/lipgloss/pull/271) - test for different GOOS & GOARCH by [@​aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/lipgloss/pull/292](https://togithub.com/charmbracelet/lipgloss/pull/292) ##### Fixed - fix combining both conditional and unconditional wrapping by [@​aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/lipgloss/pull/275](https://togithub.com/charmbracelet/lipgloss/pull/275) - fix UnderlineSpaces and StrikethroughSpaces by [@​Taz03](https://togithub.com/Taz03) in [https://github.com/charmbracelet/lipgloss/pull/299](https://togithub.com/charmbracelet/lipgloss/pull/299) - always render horizontal border edges when enabled by [@​UnseenBook](https://togithub.com/UnseenBook) in [https://github.com/charmbracelet/lipgloss/pull/211](https://togithub.com/charmbracelet/lipgloss/pull/211) - fix possible nil panic by [@​maaslalani](https://togithub.com/maaslalani) in [https://github.com/charmbracelet/lipgloss/pull/245](https://togithub.com/charmbracelet/lipgloss/pull/245) - fix transform operating on ANSI sequences by [@​meowgorithm](https://togithub.com/meowgorithm) in [https://github.com/charmbracelet/lipgloss/pull/274](https://togithub.com/charmbracelet/lipgloss/pull/274) - change propkeys from int to int64 by [@​hugoleodev](https://togithub.com/hugoleodev) in [https://github.com/charmbracelet/lipgloss/pull/291](https://togithub.com/charmbracelet/lipgloss/pull/291) #### New Contributors - [@​benwaffle](https://togithub.com/benwaffle) made their first contribution in [https://github.com/charmbracelet/lipgloss/pull/247](https://togithub.com/charmbracelet/lipgloss/pull/247) - [@​UnseenBook](https://togithub.com/UnseenBook) made their first contribution in [https://github.com/charmbracelet/lipgloss/pull/211](https://togithub.com/charmbracelet/lipgloss/pull/211) - [@​hugoleodev](https://togithub.com/hugoleodev) made their first contribution in [https://github.com/charmbracelet/lipgloss/pull/291](https://togithub.com/charmbracelet/lipgloss/pull/291) - [@​Taz03](https://togithub.com/Taz03) made their first contribution in [https://github.com/charmbracelet/lipgloss/pull/299](https://togithub.com/charmbracelet/lipgloss/pull/299) **Full Changelog**: https://github.com/charmbracelet/lipgloss/compare/v0.10.0...v0.11.0 *** The Charm logo Thoughts? Questions? We love hearing from you. Feel free to reach out on [Twitter](https://twitter.com/charmcli), [The Fediverse](https://mastodon.technology/@​charm), or [Discord](https://charm.sh/discord).
--- ### Configuration 📅 **Schedule**: Branch creation - "before 6am on monday" in timezone Australia/Sydney, Automerge - At any time (no schedule defined). đŸšĻ **Automerge**: Disabled by config. Please merge this manually once you are satisfied. â™ģ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. đŸ‘ģ **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/google/osv-scanner). --------- Co-authored-by: Rex P --- cmd/osv-scanner/fix/state-relock-result.go | 2 +- go.mod | 13 +++++++---- go.sum | 26 +++++++++++++++------- internal/tui/vuln-info.go | 2 +- 4 files changed, 29 insertions(+), 14 deletions(-) diff --git a/cmd/osv-scanner/fix/state-relock-result.go b/cmd/osv-scanner/fix/state-relock-result.go index e066835ed82..3d5485fd8b6 100644 --- a/cmd/osv-scanner/fix/state-relock-result.go +++ b/cmd/osv-scanner/fix/state-relock-result.go @@ -384,7 +384,7 @@ func (st *stateRelockResult) View(m model) string { if st.patchCompatible(i) { textSt = lipgloss.NewStyle() } else { - textSt = tui.DisabledTextStyle.Copy() + textSt = tui.DisabledTextStyle } text = textSt.Width(st.viewWidth - lipgloss.Width(checkBox)).Render(text) patchStrs[i] = lipgloss.JoinHorizontal(lipgloss.Top, checkBox, text) diff --git a/go.mod b/go.mod index 85682364150..1cb09cf680e 100644 --- a/go.mod +++ b/go.mod @@ -7,12 +7,12 @@ require ( deps.dev/util/maven v0.0.0-20240516073147-b352d7eeeae6 deps.dev/util/resolve v0.0.0-20240516073147-b352d7eeeae6 deps.dev/util/semver v0.0.0-20240516073147-b352d7eeeae6 - github.com/BurntSushi/toml v1.3.2 + github.com/BurntSushi/toml v1.4.0 github.com/CycloneDX/cyclonedx-go v0.8.0 github.com/charmbracelet/bubbles v0.18.0 - github.com/charmbracelet/bubbletea v0.26.2 + github.com/charmbracelet/bubbletea v0.26.3 github.com/charmbracelet/glamour v0.7.0 - github.com/charmbracelet/lipgloss v0.10.0 + github.com/charmbracelet/lipgloss v0.11.0 github.com/dghubble/trie v0.1.0 github.com/gkampitakis/go-snaps v0.5.4 github.com/go-git/go-billy/v5 v5.5.0 @@ -30,7 +30,7 @@ require ( github.com/tidwall/pretty v1.2.1 github.com/tidwall/sjson v1.2.5 github.com/urfave/cli/v2 v2.27.2 - golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 + golang.org/x/exp v0.0.0-20240525044651-4c93da0ed11d golang.org/x/mod v0.17.0 golang.org/x/sync v0.7.0 golang.org/x/term v0.20.0 @@ -50,6 +50,10 @@ require ( github.com/atotto/clipboard v0.1.4 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/aymerick/douceur v0.2.0 // indirect + github.com/charmbracelet/x/ansi v0.1.1 // indirect + github.com/charmbracelet/x/input v0.1.0 // indirect + github.com/charmbracelet/x/term v0.1.1 // indirect + github.com/charmbracelet/x/windows v0.1.0 // indirect github.com/cloudflare/circl v1.3.7 // indirect github.com/containerd/stargz-snapshotter/estargz v0.15.1 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect @@ -96,6 +100,7 @@ require ( github.com/vbatts/tar-split v0.11.5 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect + github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 // indirect github.com/yuin/goldmark v1.7.0 // indirect github.com/yuin/goldmark-emoji v1.0.2 // indirect diff --git a/go.sum b/go.sum index 9f6357ee4d8..0535ef96c19 100644 --- a/go.sum +++ b/go.sum @@ -8,8 +8,8 @@ deps.dev/util/resolve v0.0.0-20240516073147-b352d7eeeae6 h1:h5p7GVjKi4T7Dy3BXNxo deps.dev/util/resolve v0.0.0-20240516073147-b352d7eeeae6/go.mod h1:XXi6yRYqhtxw5DvGX/mbG6fHSLn8OgoPowNd8EAxDgk= deps.dev/util/semver v0.0.0-20240516073147-b352d7eeeae6 h1:MDgLfK05U8cxWVMflhPTnS46WZHkslTHbTYb6cxR0wk= deps.dev/util/semver v0.0.0-20240516073147-b352d7eeeae6/go.mod h1:jkcH+k02gWHBiZ7G4OnUOkSZ6WDq54Pt5DrOA8FN8Uo= -github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= -github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= +github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/CycloneDX/cyclonedx-go v0.8.0 h1:FyWVj6x6hoJrui5uRQdYZcSievw3Z32Z88uYzG/0D6M= github.com/CycloneDX/cyclonedx-go v0.8.0/go.mod h1:K2bA+324+Og0X84fA8HhN2X066K7Bxz4rpMQ4ZhjtSk= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -42,12 +42,20 @@ github.com/bradleyjkemp/cupaloy/v2 v2.8.0/go.mod h1:bm7JXdkRd4BHJk9HpwqAI8BoAY1l github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/charmbracelet/bubbles v0.18.0 h1:PYv1A036luoBGroX6VWjQIE9Syf2Wby2oOl/39KLfy0= github.com/charmbracelet/bubbles v0.18.0/go.mod h1:08qhZhtIwzgrtBjAcJnij1t1H0ZRjwHyGsy6AL11PSw= -github.com/charmbracelet/bubbletea v0.26.2 h1:Eeb+n75Om9gQ+I6YpbCXQRKHt5Pn4vMwusQpwLiEgJQ= -github.com/charmbracelet/bubbletea v0.26.2/go.mod h1:6I0nZ3YHUrQj7YHIHlM8RySX4ZIthTliMY+W8X8b+Gs= +github.com/charmbracelet/bubbletea v0.26.3 h1:iXyGvI+FfOWqkB2V07m1DF3xxQijxjY2j8PqiXYqasg= +github.com/charmbracelet/bubbletea v0.26.3/go.mod h1:bpZHfDHTYJC5g+FBK+ptJRCQotRC+Dhh3AoMxa/2+3Q= github.com/charmbracelet/glamour v0.7.0 h1:2BtKGZ4iVJCDfMF229EzbeR1QRKLWztO9dMtjmqZSng= github.com/charmbracelet/glamour v0.7.0/go.mod h1:jUMh5MeihljJPQbJ/wf4ldw2+yBP59+ctV36jASy7ps= -github.com/charmbracelet/lipgloss v0.10.0 h1:KWeXFSexGcfahHX+54URiZGkBFazf70JNMtwg/AFW3s= -github.com/charmbracelet/lipgloss v0.10.0/go.mod h1:Wig9DSfvANsxqkRsqj6x87irdy123SR4dOXlKa91ciE= +github.com/charmbracelet/lipgloss v0.11.0 h1:UoAcbQ6Qml8hDwSWs0Y1cB5TEQuZkDPH/ZqwWWYTG4g= +github.com/charmbracelet/lipgloss v0.11.0/go.mod h1:1UdRTH9gYgpcdNN5oBtjbu/IzNKtzVtb7sqN1t9LNn8= +github.com/charmbracelet/x/ansi v0.1.1 h1:CGAduulr6egay/YVbGc8Hsu8deMg1xZ/bkaXTPi1JDk= +github.com/charmbracelet/x/ansi v0.1.1/go.mod h1:dk73KoMTT5AX5BsX0KrqhsTqAnhZZoCBjs7dGWp4Ktw= +github.com/charmbracelet/x/input v0.1.0 h1:TEsGSfZYQyOtp+STIjyBq6tpRaorH0qpwZUj8DavAhQ= +github.com/charmbracelet/x/input v0.1.0/go.mod h1:ZZwaBxPF7IG8gWWzPUVqHEtWhc1+HXJPNuerJGRGZ28= +github.com/charmbracelet/x/term v0.1.1 h1:3cosVAiPOig+EV4X9U+3LDgtwwAoEzJjNdwbXDjF6yI= +github.com/charmbracelet/x/term v0.1.1/go.mod h1:wB1fHt5ECsu3mXYusyzcngVWWlu1KKUmmLhfgr/Flxw= +github.com/charmbracelet/x/windows v0.1.0 h1:gTaxdvzDM5oMa/I2ZNF7wN78X/atWemG9Wph7Ika2k4= +github.com/charmbracelet/x/windows v0.1.0/go.mod h1:GLEO/l+lizvFDBPLIOk+49gdX49L9YWMB5t+DZd0jkQ= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= @@ -235,6 +243,8 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHo github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= +github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 h1:+qGGcbkzsfDQNPPe9UDgpxAWQrhbbBXOYJFQDq/dtJw= github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913/go.mod h1:4aEEwZQutDLsQv2Deui4iYQ6DWTxR14g6m8Wv88+Xqk= github.com/yuin/goldmark v1.3.7/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= @@ -251,8 +261,8 @@ golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2Uz golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM= -golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= +golang.org/x/exp v0.0.0-20240525044651-4c93da0ed11d h1:N0hmiNbwsSNwHBAvR3QB5w25pUwH4tK0Y/RltD1j1h4= +golang.org/x/exp v0.0.0-20240525044651-4c93da0ed11d/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= diff --git a/internal/tui/vuln-info.go b/internal/tui/vuln-info.go index 6d40e1d5c4d..0f18ad3cb39 100644 --- a/internal/tui/vuln-info.go +++ b/internal/tui/vuln-info.go @@ -38,7 +38,7 @@ var ( Width(10). MarginRight(2). Foreground(ColorPrimary) - highlightedVulnInfoHeadingStyle = vulnInfoHeadingStyle.Copy().Reverse(true) + highlightedVulnInfoHeadingStyle = vulnInfoHeadingStyle.Reverse(true) ) func NewVulnInfo(vuln *resolution.ResolutionVuln) *vulnInfo { From 804589a5899ebd226e640f31a630b2508b90c9ad Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 27 May 2024 04:29:05 +0200 Subject: [PATCH 51/68] chore(deps): update workflows (major) (#897) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [golangci/golangci-lint-action](https://togithub.com/golangci/golangci-lint-action) | action | major | `v5.3.0` -> `v6.0.1` | | [slsa-framework/slsa-github-generator](https://togithub.com/slsa-framework/slsa-github-generator) | action | major | `v1.10.0` -> `v2.0.0` | --- ### Release Notes
golangci/golangci-lint-action (golangci/golangci-lint-action) ### [`v6.0.1`](https://togithub.com/golangci/golangci-lint-action/compare/v6.0.0...v6.0.1) [Compare Source](https://togithub.com/golangci/golangci-lint-action/compare/v6.0.0...v6.0.1) ### [`v6.0.0`](https://togithub.com/golangci/golangci-lint-action/releases/tag/v6.0.0) [Compare Source](https://togithub.com/golangci/golangci-lint-action/compare/v5.3.0...v6.0.0) #### What's Changed This version removes `annotations` option (because it was useless), and removes the default output format (`github-actions`). The annotations are still produced but with another approach. ##### Changes - feat: rewrite format handling by [@​ldez](https://togithub.com/ldez) in [https://github.com/golangci/golangci-lint-action/pull/1038](https://togithub.com/golangci/golangci-lint-action/pull/1038) ##### Dependencies - build(deps-dev): bump [@​typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/eslint-plugin) from 7.7.1 to 7.8.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/1034](https://togithub.com/golangci/golangci-lint-action/pull/1034) - build(deps): bump [@​types/node](https://togithub.com/types/node) from 20.12.7 to 20.12.8 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/1036](https://togithub.com/golangci/golangci-lint-action/pull/1036) - build(deps-dev): bump [@​typescript-eslint/parser](https://togithub.com/typescript-eslint/parser) from 7.7.1 to 7.8.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/golangci/golangci-lint-action/pull/1035](https://togithub.com/golangci/golangci-lint-action/pull/1035) **Full Changelog**: https://github.com/golangci/golangci-lint-action/compare/v5.3.0...v6.0.0
slsa-framework/slsa-github-generator (slsa-framework/slsa-github-generator) ### [`v2.0.0`](https://togithub.com/slsa-framework/slsa-github-generator/blob/HEAD/CHANGELOG.md#v200) [Compare Source](https://togithub.com/slsa-framework/slsa-github-generator/compare/v1.10.0...v2.0.0) ##### v2.0.0: Breaking Change: upload-artifact and download-artifact - Our workflows now use the new `@v4`s of `actions/upload-artifact` and `actions/download-artifact`, which are incompatiblle with the prior `@v3`. See Our docs on the [generic generator](./internal/builders/generic/README.md#compatibility-with-actionsdownload-artifact) for more information and how to upgrade. ##### v2.0.0: Breaking Change: attestation-name Workflow Input and Output - `attestation-name` as a workflow input to `.github/workflows/generator_generic_slsa3.yml` is now removed. Use `provenance-name` instead. ##### v2.0.0: DSSE Rekor Type - When uploading signed provenance to the log, the entry created in the log is now a DSSE Rekor type. This fixes a bug where the current intoto type does not persist provenance signatures. The attestation will no longer be persisted in Rekor ([#​3299](https://togithub.com/slsa-framework/slsa-github-generator/issues/3299))
--- ### Configuration 📅 **Schedule**: Branch creation - "before 6am on monday" in timezone Australia/Sydney, Automerge - At any time (no schedule defined). đŸšĻ **Automerge**: Disabled by config. Please merge this manually once you are satisfied. â™ģ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. đŸ‘ģ **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/google/osv-scanner). --- .github/workflows/goreleaser.yml | 2 +- .github/workflows/lint-action/action.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/goreleaser.yml b/.github/workflows/goreleaser.yml index abfccf9cbab..72ac495e345 100644 --- a/.github/workflows/goreleaser.yml +++ b/.github/workflows/goreleaser.yml @@ -61,7 +61,7 @@ jobs: actions: read # To read the workflow path. id-token: write # To sign the provenance. contents: write # To add assets to a release. - uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v1.10.0 + uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.0.0 with: base64-subjects: "${{ needs.goreleaser.outputs.hashes }}" upload-assets: true # upload to a new release diff --git a/.github/workflows/lint-action/action.yml b/.github/workflows/lint-action/action.yml index 4b627e8c176..c4ebd6494a8 100644 --- a/.github/workflows/lint-action/action.yml +++ b/.github/workflows/lint-action/action.yml @@ -19,7 +19,7 @@ runs: using: composite steps: - name: Run golangci-lint - uses: golangci/golangci-lint-action@38e1018663fa5173f3968ea0777460d3de38f256 # v5.3.0 + uses: golangci/golangci-lint-action@a4f60bb28d35aeee14e6880718e0c85ff1882e64 # v6.0.1 with: # Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version version: v1.56.2 From 588dda2df762bcb5e1309af71968f6a96f70e7e9 Mon Sep 17 00:00:00 2001 From: Rex P <106129829+another-rex@users.noreply.github.com> Date: Tue, 28 May 2024 13:23:56 +1000 Subject: [PATCH 52/68] Now that we have updated to go1.21.10, we can remove the ignore line from osv-scanner.toml (#996) Now that we have updated to go1.21.10, we can remove the ignore line from osv-scanner.toml which was ignoring a vulnerability in go1.21.8 --- osv-scanner.toml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/osv-scanner.toml b/osv-scanner.toml index 8b54b064ab6..8b137891791 100644 --- a/osv-scanner.toml +++ b/osv-scanner.toml @@ -1,3 +1 @@ -[[IgnoredVulns]] -id = "GO-2024-2687" -reason = "We do not have a HTTP endpoint, and queries are made to trusted endpoints." + From 055091604aee6cafe8344fcb4c3e1641ef2f5b03 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Tue, 28 May 2024 16:24:06 +1200 Subject: [PATCH 53/68] feat: support comparing Alpine versions locally (#980) This introduces support for comparing Alpine versions locally using the same logic as the `apk` package manager, along with a generator for generating fixtures. There is a bit of fuzziness in the behaviour across different versions of `apk` - the `alpine:3.x` docker images all use `apk` v2.x, which is what the fixture generator uses too and at least `apk` v2.14 (which is used by `alpine:3.19`) and v2.10 pass; however the current latest upcoming version of `apk` technically fails on approximately 30 fixtures which I think is because it has fixed https://gitlab.alpinelinux.org/alpine/abuild/-/issues/10088. Beyond that I was able to find a handful of other edge cases where the comparison results between these versions was different, but they all seemed to be primarily around the handling of invalid versions which are not expected to be present in OSV data anyway and they look to be the result of bugfixes meaning we'd need special "anti" handling to support in a way that ensures valid versions are still compared correctly, so I think it's good enough to ship. Resolves #952 --- internal/semantic/compare_test.go | 8 + .../fixtures/alpine-versions-generated.txt | 13980 ++++++++++++++++ .../semantic/fixtures/alpine-versions.txt | 781 + internal/semantic/parse.go | 2 + internal/semantic/version-alpine.go | 337 + .../generators/generate-alpine-versions.py | 279 + 6 files changed, 15387 insertions(+) create mode 100644 internal/semantic/fixtures/alpine-versions-generated.txt create mode 100644 internal/semantic/fixtures/alpine-versions.txt create mode 100644 internal/semantic/version-alpine.go create mode 100755 scripts/generators/generate-alpine-versions.py diff --git a/internal/semantic/compare_test.go b/internal/semantic/compare_test.go index 16ea6951034..132ef578a8e 100644 --- a/internal/semantic/compare_test.go +++ b/internal/semantic/compare_test.go @@ -226,6 +226,14 @@ func TestVersion_Compare_Ecosystems(t *testing.T) { name: "CRAN", file: "cran-versions-generated.txt", }, + { + name: "Alpine", + file: "alpine-versions.txt", + }, + { + name: "Alpine", + file: "alpine-versions-generated.txt", + }, } for _, tt := range tests { tt := tt diff --git a/internal/semantic/fixtures/alpine-versions-generated.txt b/internal/semantic/fixtures/alpine-versions-generated.txt new file mode 100644 index 00000000000..da6d2ac8660 --- /dev/null +++ b/internal/semantic/fixtures/alpine-versions-generated.txt @@ -0,0 +1,13980 @@ +0.6.17-r0 < 0.6.19-r0 +0.6.19-r0 < 0.6.19-r1 +0.6.19-r1 < 0.6.19-r2 +0.6.19-r2 < 0.6.19-r3 +0.6.19-r3 < 0.6.20-r0 +0.6.20-r0 < 0.6.20-r1 +0.6.20-r1 < 0.6.21-r0 +0.6.21-r0 < 0.6.21-r1 +0.6.21-r1 < 0.6.21-r2 +0.6.21-r2 < 0.6.21-r3 +1.11.23-r0 < 1.11.23-r1 +1.11.23-r1 < 1.11.23-r3 +2.2.16-r0 < 2.2.16-r1 +2.2.16-r1 < 2.2.16-r2 +2.2.16-r2 < 2.2.16-r3 +2.2.16-r3 < 2.2.17-r0 +2.2.17-r0 < 2.2.17-r1 +2.2.17-r1 < 2.2.17-r2 +2.2.17-r2 < 2.2.17-r3 +2.2.17-r3 < 2.2.17-r4 +2.2.17-r4 < 2.2.17-r5 +2.2.17-r5 < 2.2.20-r0 +2.2.20-r0 < 2.2.21-r0 +2.2.21-r0 < 2.2.21-r1 +2.2.21-r1 < 2.2.21-r2 +2.2.21-r2 < 2.2.21-r3 +2.2.21-r3 < 2.2.22-r0 +2.2.22-r0 < 2.2.22-r1 +2.2.22-r1 < 2.4.3-r0 +2.4.3-r0 < 2.4.3-r1 +2.4.3-r1 < 2.4.3-r2 +2.4.3-r2 < 2.4.4-r0 +2.4.4-r0 < 2.4.4-r1 +2.4.4-r1 < 2.4.6-r0 +2.4.6-r0 < 2.4.6-r1 +2.4.6-r1 < 2.4.6-r2 +2.4.6-r2 < 2.4.6-r3 +2.4.6-r3 < 2.4.6-r4 +2.4.6-r4 < 2.4.7-r0 +2.4.7-r0 < 2.4.9-r0 +2.4.9-r0 < 2.4.9-r1 +2.4.9-r1 < 2.4.10-r0 +2.4.10-r0 < 2.4.12-r0 +2.4.12-r0 < 2.4.12-r1 +2.4.12-r1 < 2.4.12-r2 +2.4.12-r2 < 2.4.12-r3 +2.4.12-r3 < 2.4.12-r4 +2.4.12-r4 < 2.4.16-r0 +2.4.16-r0 < 2.4.17-r0 +2.4.17-r0 < 2.4.17-r1 +2.4.17-r1 < 2.4.17-r2 +2.4.17-r2 < 2.4.17-r3 +2.4.17-r3 < 2.4.17-r4 +2.4.17-r4 < 2.4.17-r5 +2.4.17-r5 < 2.4.17-r6 +2.4.17-r6 < 2.4.17-r7 +2.4.17-r7 < 2.4.18-r0 +2.4.18-r0 < 2.4.18-r1 +2.4.18-r1 < 2.4.18-r2 +2.4.18-r2 < 2.4.20-r0 +2.4.20-r0 < 2.4.20-r1 +2.4.20-r1 < 2.4.20-r2 +2.4.20-r2 < 2.4.23-r0 +2.4.23-r0 < 2.4.23-r1 +2.4.23-r1 < 2.4.23-r2 +2.4.23-r2 < 2.4.23-r3 +2.4.23-r3 < 2.4.23-r4 +2.4.23-r4 < 2.4.23-r5 +2.4.23-r5 < 2.4.23-r6 +2.4.23-r6 < 2.4.23-r7 +2.4.23-r7 < 2.4.23-r8 +2.4.23-r8 < 2.4.23-r9 +2.4.23-r9 < 2.4.23-r10 +2.4.23-r10 < 2.4.25-r0 +2.4.25-r0 < 2.4.25-r1 +2.4.25-r1 < 2.4.26-r0 +2.4.26-r0 < 2.4.26-r1 +2.4.26-r1 < 2.4.27-r0 +2.4.27-r0 < 2.4.27-r1 +2.4.27-r1 < 2.4.27-r2 +2.4.27-r2 < 2.4.28-r0 +2.4.28-r0 < 2.4.29-r0 +2.4.29-r0 < 2.4.29-r1 +2.4.29-r1 < 2.4.33-r0 +2.4.33-r0 < 2.4.33-r1 +2.4.33-r1 < 2.4.34-r0 +2.4.34-r0 < 2.4.34-r1 +2.4.34-r1 < 2.4.35-r0 +2.4.35-r0 < 2.4.37-r0 +2.4.37-r0 < 2.4.37-r1 +2.4.37-r1 < 2.4.38-r0 +2.4.38-r0 < 2.4.38-r1 +2.4.38-r1 < 2.4.38-r2 +2.4.38-r2 < 2.4.38-r3 +2.4.38-r3 < 2.4.39-r0 +2.4.39-r0 < 2.4.39-r2 +2.4.39-r2 < 2.4.39-r3 +2.4.39-r3 < 2.4.41-r0 +2.4.41-r0 < 2.4.41-r2 +2.4.41-r2 < 2.4.41-r3 +2.4.41-r3 < 2.4.43-r0 +2.4.43-r0 < 2.4.43-r2 +2.4.43-r2 < 2.4.46-r0 +2.4.46-r0 < 2.4.46-r1 +2.4.46-r1 < 2.4.46-r2 +2.4.46-r2 < 2.4.46-r3 +2.4.46-r3 < 2.4.48-r0 +2.4.48-r0 < 2.4.48-r1 +2.4.48-r1 < 2.4.48-r2 +2.4.48-r2 < 2.4.48-r3 +2.4.48-r3 < 2.4.49-r1 +2.4.49-r1 < 2.4.49-r2 +2.4.49-r2 < 2.4.49-r3 +2.4.49-r3 < 2.4.50-r0 +2.4.50-r0 < 2.4.50-r1 +2.4.50-r1 < 2.4.50-r2 +2.4.50-r2 < 2.4.50-r3 +2.4.50-r3 < 2.4.51-r0 +2.4.51-r0 < 2.4.51-r1 +2.4.51-r1 < 2.4.51-r3 +2.4.51-r3 < 2.4.52-r0 +2.4.52-r0 < 2.4.52-r1 +2.4.52-r1 < 2.4.52-r3 +2.4.52-r3 < 2.4.53-r0 +2.4.53-r0 < 2.4.53-r1 +2.4.53-r1 < 2.4.53-r3 +2.4.53-r3 < 2.4.54-r0 +2.4.54-r0 < 2.4.54-r1 +2.4.54-r1 < 2.4.54-r2 +2.4.54-r2 < 2.4.55-r0 +2.4.55-r0 < 2.4.55-r1 +2.4.55-r1 < 2.4.56-r0 +2.4.56-r0 < 2.4.56-r1 +2.4.56-r1 < 2.4.57-r0 +2.4.57-r0 < 2.4.57-r1 +2.4.57-r1 < 2.4.57-r2 +2.4.57-r2 < 2.4.57-r3 +2.4.57-r3 < 2.4.58-r0 +2.4.58-r0 < 2.4.58-r1 +2.4.58-r1 < 2.4.58-r3 +0.20.2-r0 < 0.20.5-r0 +0.20.5-r0 < 0.22.2-r0 +0.22.2-r0 < 0.22.3-r0 +0.22.3-r0 < 0.22.4-r0 +0.22.4-r0 < 0.22.5-r0 +0.22.5-r0 < 0.22.5-r1 +0.22.5-r1 < 0.24.0-r0 +0.24.0-r0 < 0.24.0-r1 +0.24.0-r1 < 0.24.1-r0 +0.24.1-r0 < 0.24.2-r0 +0.24.2-r0 < 0.24.3-r0 +0.24.3-r0 < 0.26.0-r0 +0.26.0-r0 < 0.26.0-r1 +0.26.0-r1 < 0.26.2-r0 +0.26.2-r0 < 0.28.0-r0 +0.28.0-r0 < 0.28.0-r1 +0.28.0-r1 < 0.28.0-r2 +0.28.0-r2 < 0.28.1-r2 +0.28.1-r2 < 0.28.2-r2 +1.8.7_p72-r1 < 1.8.7_p72-r2 +1.8.7_p72-r2 < 1.8.7_p160-r2 +1.8.7_p160-r2 < 1.8.7_p160-r3 +1.8.7_p160-r3 < 1.8.7_p174-r0 +1.8.7_p174-r0 < 1.8.7_p174-r1 +1.8.7_p174-r1 < 1.8.7_p174-r2 +1.8.7_p174-r2 < 1.8.7_p174-r3 +1.8.7_p174-r3 < 1.8.7_p174-r4 +1.8.7_p174-r4 < 1.8.7_p174-r6 +1.8.7_p174-r6 < 1.8.7_p174-r7 +1.8.7_p174-r7 < 1.8.7_p299-r0 +1.8.7_p299-r0 < 1.8.7_p299-r1 +1.8.7_p299-r1 < 1.8.7_p299-r2 +1.8.7_p299-r2 < 1.8.7_p352-r0 +1.8.7_p352-r0 < 1.8.7_p352-r1 +1.8.7_p352-r1 < 1.8.7_p352-r2 +1.8.7_p352-r2 < 1.8.7_p358-r1 +1.8.7_p358-r1 < 1.8.7_p358-r2 +1.8.7_p358-r2 < 1.9.3_p194-r0 +1.9.3_p194-r0 < 1.9.3_p194-r2 +1.9.3_p194-r2 < 1.9.3_p286-r0 +1.9.3_p286-r0 < 1.9.3_p286-r1 +1.9.3_p286-r1 < 1.9.3_p286-r2 +1.9.3_p286-r2 < 1.9.3_p327-r0 +1.9.3_p327-r0 < 1.9.3_p327-r2 +1.9.3_p327-r2 < 1.9.3_p362-r0 +1.9.3_p362-r0 < 1.9.3_p362-r2 +1.9.3_p362-r2 < 1.9.3_p374-r0 +1.9.3_p374-r0 < 1.9.3_p374-r2 +1.9.3_p374-r2 < 1.9.3_p385-r0 +1.9.3_p385-r0 < 1.9.3_p385-r2 +1.9.3_p385-r2 < 1.9.3_p392-r0 +1.9.3_p392-r0 < 1.9.3_p392-r2 +1.9.3_p392-r2 < 2.0.0_p0-r0 +2.0.0_p0-r0 < 2.0.0_p0-r1 +2.0.0_p0-r1 < 2.0.0_p0-r2 +2.0.0_p0-r2 < 2.0.0_p195-r0 +2.0.0_p195-r0 < 2.0.0_p195-r2 +2.0.0_p195-r2 < 2.0.0_p247-r0 +2.0.0_p247-r0 < 2.0.0_p247-r1 +2.0.0_p247-r1 < 2.0.0_p247-r2 +2.0.0_p247-r2 < 2.0.0_p247-r3 +2.0.0_p247-r3 < 2.0.0_p353-r0 +2.0.0_p353-r0 < 2.0.0_p353-r1 +2.0.0_p353-r1 < 2.0.0_p353-r2 +2.0.0_p353-r2 < 2.0.0_p481-r0 +2.0.0_p481-r0 < 2.0.0_p481-r2 +2.0.0_p481-r2 < 2.1.5-r0 +2.1.5-r0 < 2.1.5-r1 +2.1.5-r1 < 2.1.5-r2 +2.1.5-r2 < 2.2.1-r0 +2.2.1-r0 < 2.2.1-r2 +2.2.1-r2 < 2.2.2-r0 +2.2.2-r0 < 2.2.2-r1 +2.2.2-r1 < 2.2.2-r2 +2.2.2-r2 < 2.2.3-r0 +2.2.3-r0 < 2.2.3-r1 +2.2.3-r1 < 2.2.3-r2 +2.2.3-r2 < 2.2.4-r0 +2.2.4-r0 < 2.2.4-r2 +2.2.4-r2 < 2.2.8-r2 +2.2.8-r2 < 2.3.1-r0 +2.3.1-r0 < 2.3.1-r1 +2.3.1-r1 < 2.3.1-r2 +2.3.1-r2 < 2.3.2-r0 +2.3.2-r0 < 2.3.2-r2 +2.3.2-r2 < 2.3.3-r0 +2.3.3-r0 < 2.3.3-r1 +2.3.3-r1 < 2.3.3-r2 +2.3.3-r2 < 2.3.3-r3 +2.3.3-r3 < 2.3.5-r2 +2.3.5-r2 < 2.3.6-r2 +2.3.6-r2 < 2.3.7-r2 +2.3.7-r2 < 2.4.0-r3 +2.4.0-r3 < 2.4.1-r3 +2.4.1-r3 < 2.4.2-r3 +2.4.2-r3 < 2.4.3-r3 +2.4.3-r3 < 2.4.4-r3 +2.4.4-r3 < 2.4.5-r3 +2.4.5-r3 < 2.4.6-r3 +2.4.6-r3 < 2.5.0-r3 +2.5.0-r3 < 2.5.1-r3 +2.5.1-r3 < 2.5.2-r3 +2.5.2-r3 < 2.5.3-r3 +2.5.3-r3 < 2.5.5-r3 +2.5.5-r3 < 2.5.7-r3 +2.5.7-r3 < 2.5.8-r3 +2.5.8-r3 < 2.6.3-r3 +2.6.3-r3 < 2.6.4-r3 +2.6.4-r3 < 2.6.5-r3 +2.6.5-r3 < 2.6.6-r3 +2.6.6-r3 < 2.6.7-r3 +2.6.7-r3 < 2.7.1-r3 +2.7.1-r3 < 2.7.2-r3 +2.7.2-r3 < 2.7.3-r3 +2.7.3-r3 < 2.7.4-r3 +2.7.4-r3 < 2.7.5-r3 +2.7.5-r3 < 2.7.6-r3 +2.7.6-r3 < 2.7.7-r3 +2.7.7-r3 < 3.0.2-r3 +3.0.2-r3 < 3.0.3-r3 +3.0.3-r3 < 3.0.4-r3 +3.0.4-r3 < 3.0.5-r3 +3.0.5-r3 < 3.1.1-r3 +3.1.1-r3 < 3.1.2-r3 +3.1.2-r3 < 3.1.3-r3 +2.0.1-r0 < 2.0.1-r1 +2.0.1-r1 < 2.0.1-r2 +2.0.1-r2 < 2.0.1-r3 +2.0.1-r3 < 2.0.1-r4 +2.0.1-r4 < 2.0.1-r5 +2.0.1-r5 < 2.0.1-r6 +2.0.1-r6 < 2.1.0-r0 +2.1.0-r0 < 2.1.0-r1 +2.1.0-r1 < 2.1.0-r2 +2.1.0-r2 < 2.1.1-r0 +2.1.1-r0 < 2.1.1-r1 +2.1.1-r1 < 2.1.1-r2 +2.1.1-r2 < 2.2.0-r0 +2.2.0-r0 < 2.2.0-r1 +2.2.0-r1 < 2.2.1-r0 +2.2.1-r0 < 2.2.2-r0 +2.2.2-r0 < 2.2.3-r0 +2.2.3-r1 < 2.2.4-r0 +2.2.4-r0 < 2.2.5-r0 +2.2.5-r0 < 2.2.6-r0 +2.2.6-r0 < 2.2.7-r0 +2.2.7-r0 < 2.2.7-r1 +2.2.7-r1 < 2.2.8-r0 +2.2.8-r0 < 2.2.9-r0 +2.2.9-r0 < 2.2.9-r1 +2.2.9-r1 < 2.2.10-r0 +2.2.10-r0 < 2.2.10-r1 +2.2.10-r1 < 2.3.0-r0 +2.3.0-r0 < 2.3.0-r1 +2.3.0-r1 < 2.4.1-r0 +2.4.1-r0 < 2.4.1-r1 +2.4.1-r1 < 2.4.2-r0 +2.4.2-r0 < 2.4.2-r1 +2.4.2-r1 < 2.4.3-r0 +2.4.3-r1 < 2.4.4-r0 +2.4.4-r1 < 2.4.5-r0 +2.4.5-r0 < 2.4.5-r1 +2.4.5-r1 < 2.4.6-r0 +2.4.6-r1 < 2.4.7-r0 +2.4.7-r0 < 2.4.7-r1 +2.4.7-r1 < 2.4.8-r0 +2.4.8-r0 < 2.4.8-r1 +2.4.8-r1 < 2.4.9-r0 +2.4.9-r1 < 2.5.0-r0 +2.5.0-r0 < 2.5.0-r1 +2.5.0-r1 < 2.5.0-r2 +2.5.0-r2 < 2.6.0-r1 +2.6.0-r1 < 2.6.0-r2 +0.94.2-r0 < 0.94.2-r1 +0.94.2-r1 < 0.94.2-r2 +0.94.2-r2 < 0.95.1-r0 +0.95.1-r0 < 0.95.1-r1 +0.95.1-r1 < 0.95.2-r0 +0.95.2-r0 < 0.95.2-r1 +0.95.2-r1 < 0.95.3-r0 +0.95.3-r0 < 0.95.3-r1 +0.95.3-r1 < 0.96-r0 +0.96-r0 < 0.96.1-r0 +0.96.1-r0 < 0.96.2-r0 +0.96.2-r0 < 0.96.3-r0 +0.96.3-r0 < 0.96.4-r0 +0.96.4-r0 < 0.96.5-r0 +0.96.5-r0 < 0.97-r0 +0.97-r0 < 0.97-r1 +0.97-r1 < 0.97-r2 +0.97-r2 < 0.97-r3 +0.97-r3 < 0.97-r4 +0.97-r4 < 0.97.1-r0 +0.97.1-r0 < 0.97.2-r0 +0.97.2-r0 < 0.97.3-r0 +0.97.3-r0 < 0.97.3-r1 +0.97.3-r1 < 0.97.3-r2 +0.97.3-r2 < 0.97.3-r3 +0.97.3-r3 < 0.97.4-r0 +0.97.4-r0 < 0.97.4-r1 +0.97.4-r1 < 0.97.4-r2 +0.97.4-r2 < 0.97.5-r0 +0.97.5-r0 < 0.97.6-r0 +0.97.6-r0 < 0.97.6-r1 +0.97.6-r1 < 0.97.7-r0 +0.97.7-r0 < 0.97.8-r0 +0.97.8-r0 < 0.97.8-r1 +0.97.8-r1 < 0.97.8-r2 +0.97.8-r2 < 0.98-r0 +0.98-r0 < 0.98-r1 +0.98-r1 < 0.98.1-r0 +0.98.1-r0 < 0.98.1-r1 +0.98.1-r1 < 0.98.1-r2 +0.98.1-r2 < 0.98.3-r0 +0.98.3-r0 < 0.98.4-r0 +0.98.4-r0 < 0.98.4-r1 +0.98.4-r1 < 0.98.5-r0 +0.98.5-r0 < 0.98.6-r0 +0.98.6-r0 < 0.98.6-r1 +0.98.6-r1 < 0.98.6-r2 +0.98.6-r2 < 0.98.7-r0 +0.98.7-r0 < 0.98.7-r1 +0.98.7-r1 < 0.98.7-r2 +0.98.7-r2 < 0.99-r0 +0.99-r0 < 0.99-r1 +0.99-r1 < 0.99-r2 +0.99-r2 < 0.99-r3 +0.99-r3 < 0.99.1-r0 +0.99.1-r0 < 0.99.1-r1 +0.99.1-r1 < 0.99.1-r2 +0.99.1-r2 < 0.99.2-r0 +0.99.2-r0 < 0.99.2-r1 +0.99.2-r1 < 0.99.2-r2 +0.99.2-r2 < 0.99.2-r3 +0.99.2-r3 < 0.99.2-r4 +0.99.2-r4 < 0.99.2-r5 +0.99.2-r5 < 0.99.2-r6 +0.99.2-r6 < 0.99.3-r1 +0.99.3-r1 < 0.99.3-r2 +0.99.3-r2 < 0.99.3-r3 +0.99.3-r3 < 0.99.4-r0 +0.99.4-r0 < 0.99.4-r1 +0.99.4-r1 < 0.99.4-r2 +0.99.4-r2 < 0.99.4-r4 +0.99.4-r4 < 0.99.4-r6 +0.99.4-r6 < 0.100.0-r0 +0.100.0-r0 < 0.100.0-r1 +0.100.0-r1 < 0.100.0-r2 +0.100.0-r2 < 0.100.1-r0 +0.100.1-r0 < 0.100.1-r1 +0.100.1-r1 < 0.100.1-r2 +0.100.1-r2 < 0.100.1-r4 +0.100.1-r4 < 0.100.1-r6 +0.100.1-r6 < 0.100.2-r0 +0.100.2-r0 < 0.100.2-r1 +0.100.2-r1 < 0.100.2-r2 +0.100.2-r2 < 0.100.2-r4 +0.100.2-r4 < 0.100.2-r6 +0.100.2-r6 < 0.100.3-r0 +0.100.3-r0 < 0.100.3-r1 +0.100.3-r1 < 0.101.4-r0 +0.101.4-r0 < 0.101.4-r1 +0.101.4-r1 < 0.102.0-r0 +0.102.0-r0 < 0.102.0-r1 +0.102.0-r1 < 0.102.1-r0 +0.102.1-r0 < 0.102.1-r1 +0.102.1-r1 < 0.102.2-r0 +0.102.2-r0 < 0.102.3-r0 +0.102.3-r0 < 0.102.3-r1 +0.102.3-r1 < 0.102.4-r0 +0.102.4-r0 < 0.102.4-r1 +0.102.4-r1 < 0.102.4-r2 +0.102.4-r2 < 0.103.0-r0 +0.103.0-r0 < 0.103.0-r1 +0.103.0-r1 < 0.103.1-r1 +0.103.1-r1 < 0.103.2-r1 +0.26-r0 < 0.27-r0 +0.27-r0 < 0.27-r1 +0.27-r1 < 0.27-r2 +2.1.23-r0 < 2.1.23-r1 +2.1.23-r1 < 2.1.23-r2 +2.1.23-r2 < 2.1.23-r3 +2.1.23-r3 < 2.1.23-r4 +2.1.23-r4 < 2.1.23-r5 +2.1.23-r5 < 2.1.23-r6 +2.1.23-r6 < 2.1.23-r7 +2.1.23-r7 < 2.1.23-r8 +2.1.23-r8 < 2.1.23-r9 +2.1.23-r9 < 2.1.23-r10 +2.1.23-r10 < 2.1.23-r11 +2.1.23-r11 < 2.1.23-r13 +2.1.23-r13 < 2.1.23-r14 +2.1.23-r14 < 2.1.23-r15 +2.1.23-r15 < 2.1.26-r0 +2.1.26-r0 < 2.1.26-r1 +2.1.26-r1 < 2.1.26-r2 +2.1.26-r2 < 2.1.26-r3 +2.1.26-r3 < 2.1.26-r4 +2.1.26-r4 < 2.1.26-r5 +2.1.26-r5 < 2.1.26-r6 +2.1.26-r6 < 2.1.26-r7 +2.1.26-r7 < 2.1.26-r8 +2.1.26-r8 < 2.1.26-r9 +2.1.26-r9 < 2.1.26-r10 +2.1.26-r10 < 2.1.26-r11 +2.1.26-r11 < 2.1.26-r12 +2.1.26-r12 < 2.1.26-r13 +2.1.26-r13 < 2.1.26-r14 +2.1.26-r14 < 2.1.26-r15 +2.1.26-r15 < 2.1.27-r0 +2.1.27-r0 < 2.1.27-r1 +2.1.27-r1 < 2.1.27-r2 +2.1.27-r2 < 2.1.27-r3 +2.1.27-r3 < 2.1.27-r4 +2.1.27-r4 < 2.1.27-r5 +2.1.27-r5 < 2.1.27-r6 +2.1.27-r6 < 2.1.27-r7 +2.1.27-r7 < 2.1.27-r8 +2.1.27-r8 < 2.1.27-r9 +2.1.27-r9 < 2.1.27-r10 +2.1.27-r10 < 2.1.27-r11 +2.1.27-r11 < 2.1.27-r12 +2.1.27-r12 < 2.1.27-r13 +2.1.27-r13 < 2.1.27-r14 +7.19.2-r0 < 7.19.2-r1 +7.19.2-r1 < 7.19.4-r0 +7.19.4-r0 < 7.19.5-r0 +7.19.5-r0 < 7.19.6-r0 +7.19.6-r0 < 7.19.7-r0 +7.19.7-r0 < 7.19.7-r1 +7.19.7-r1 < 7.20.1-r0 +7.20.1-r0 < 7.20.1-r1 +7.20.1-r1 < 7.21.0-r0 +7.21.0-r0 < 7.21.1-r0 +7.21.1-r0 < 7.21.2-r0 +7.21.2-r0 < 7.21.3-r0 +7.21.3-r0 < 7.21.3-r1 +7.21.3-r1 < 7.21.4-r0 +7.21.4-r0 < 7.21.4-r1 +7.21.4-r1 < 7.21.5-r0 +7.21.5-r0 < 7.21.5-r1 +7.21.5-r1 < 7.21.6-r0 +7.21.6-r0 < 7.21.7-r0 +7.21.7-r0 < 7.21.7-r1 +7.21.7-r1 < 7.21.7-r2 +7.21.7-r2 < 7.22.0-r0 +7.22.0-r0 < 7.23.1-r0 +7.23.1-r0 < 7.24.0-r0 +7.24.0-r0 < 7.25.0-r0 +7.25.0-r0 < 7.26.0-r0 +7.26.0-r0 < 7.27.0-r0 +7.27.0-r0 < 7.27.0-r1 +7.27.0-r1 < 7.28.0-r0 +7.28.0-r0 < 7.28.1-r0 +7.28.1-r0 < 7.29.0-r0 +7.29.0-r0 < 7.30.0-r0 +7.30.0-r0 < 7.31.0-r0 +7.31.0-r0 < 7.32.0-r0 +7.32.0-r0 < 7.33.0-r0 +7.33.0-r0 < 7.33.0-r1 +7.33.0-r1 < 7.34.0-r0 +7.34.0-r0 < 7.34.0-r1 +7.34.0-r1 < 7.35.0-r0 +7.35.0-r0 < 7.36.0-r0 +7.36.0-r0 < 7.37.0-r0 +7.37.0-r0 < 7.37.1-r0 +7.37.1-r0 < 7.38.0-r0 +7.38.0-r0 < 7.39.0-r0 +7.39.0-r0 < 7.40.0-r0 +7.40.0-r0 < 7.41.0-r0 +7.41.0-r0 < 7.42.0-r0 +7.42.0-r0 < 7.42.1-r0 +7.42.1-r0 < 7.42.1-r1 +7.42.1-r1 < 7.43.0-r0 +7.43.0-r0 < 7.44.0-r0 +7.44.0-r0 < 7.45.0-r0 +7.45.0-r0 < 7.45.0-r1 +7.45.0-r1 < 7.46.0-r0 +7.46.0-r0 < 7.46.0-r1 +7.46.0-r1 < 7.46.0-r2 +7.46.0-r2 < 7.47.0-r0 +7.47.0-r0 < 7.47.1-r0 +7.47.1-r0 < 7.48.0-r0 +7.48.0-r0 < 7.49.0-r0 +7.49.0-r0 < 7.49.1-r0 +7.49.1-r0 < 7.49.1-r1 +7.49.1-r1 < 7.49.1-r2 +7.49.1-r2 < 7.49.1-r3 +7.49.1-r3 < 7.49.1-r4 +7.49.1-r4 < 7.50.0-r0 +7.50.0-r0 < 7.50.1-r0 +7.50.1-r0 < 7.50.2-r0 +7.50.2-r0 < 7.50.3-r0 +7.50.3-r0 < 7.50.3-r1 +7.50.3-r1 < 7.51.0-r0 +7.51.0-r0 < 7.51.0-r1 +7.51.0-r1 < 7.52.0-r0 +7.52.0-r0 < 7.52.1-r0 +7.52.1-r0 < 7.52.1-r1 +7.52.1-r1 < 7.52.1-r2 +7.52.1-r2 < 7.52.1-r3 +7.52.1-r3 < 7.53.0-r0 +7.53.0-r0 < 7.53.1-r0 +7.53.1-r0 < 7.53.1-r1 +7.53.1-r1 < 7.53.1-r2 +7.53.1-r2 < 7.53.1-r3 +7.53.1-r3 < 7.54.0-r0 +7.54.0-r0 < 7.54.1-r0 +7.54.1-r0 < 7.55.0-r0 +7.55.0-r0 < 7.55.0-r1 +7.55.0-r1 < 7.55.0-r2 +7.55.0-r2 < 7.55.1-r0 +7.55.1-r0 < 7.56.0-r0 +7.56.0-r0 < 7.56.1-r0 +7.56.1-r0 < 7.56.1-r1 +7.56.1-r1 < 7.57.0-r0 +7.57.0-r0 < 7.58.0-r0 +7.58.0-r0 < 7.58.0-r1 +7.58.0-r1 < 7.58.0-r2 +7.58.0-r2 < 7.59.0-r0 +7.59.0-r0 < 7.59.0-r1 +7.59.0-r1 < 7.60.0-r0 +7.60.0-r0 < 7.60.0-r1 +7.60.0-r1 < 7.61.0-r0 +7.61.0-r0 < 7.61.0-r1 +7.61.0-r1 < 7.61.1-r0 +7.61.1-r0 < 7.61.1-r1 +7.61.1-r1 < 7.62.0-r0 +7.62.0-r0 < 7.62.0-r1 +7.62.0-r1 < 7.62.0-r2 +7.62.0-r2 < 7.63.0-r0 +7.63.0-r0 < 7.63.0-r2 +7.63.0-r2 < 7.64.0-r0 +7.64.0-r0 < 7.64.0-r1 +7.64.0-r1 < 7.64.0-r2 +7.64.0-r2 < 7.64.1-r0 +7.64.1-r0 < 7.64.1-r1 +7.64.1-r1 < 7.64.1-r2 +7.64.1-r2 < 7.64.1-r3 +7.64.1-r3 < 7.65.0-r0 +7.65.0-r0 < 7.65.0-r3 +7.65.0-r3 < 7.65.1-r0 +7.65.1-r0 < 7.65.1-r3 +7.65.1-r3 < 7.65.3-r0 +7.65.3-r0 < 7.66.0-r0 +7.66.0-r0 < 7.66.0-r3 +7.66.0-r3 < 7.67.0-r0 +7.67.0-r0 < 7.67.0-r1 +7.67.0-r1 < 7.67.0-r2 +7.67.0-r2 < 7.67.0-r3 +7.67.0-r3 < 7.67.0-r4 +7.67.0-r4 < 7.67.0-r5 +7.67.0-r5 < 7.68.0-r0 +7.68.0-r0 < 7.69.0-r0 +7.69.0-r0 < 7.69.0-r1 +7.69.0-r1 < 7.69.1-r0 +7.69.1-r0 < 7.69.1-r1 +7.69.1-r1 < 7.69.1-r2 +7.69.1-r2 < 7.69.1-r3 +7.69.1-r3 < 7.70.0-r0 +7.70.0-r0 < 7.70.0-r1 +7.70.0-r1 < 7.70.0-r2 +7.70.0-r2 < 7.71.0-r0 +7.71.0-r0 < 7.71.0-r1 +7.71.0-r1 < 7.71.1-r0 +7.71.1-r0 < 7.72.0-r0 +7.72.0-r0 < 7.73.0-r0 +7.73.0-r0 < 7.74.0-r0 +7.74.0-r0 < 7.74.0-r1 +7.74.0-r1 < 7.75.0-r0 +7.75.0-r0 < 7.76.0-r0 +7.76.0-r0 < 7.76.1-r0 +7.76.1-r0 < 7.76.1-r3 +7.76.1-r3 < 7.77.0-r0 +7.77.0-r0 < 7.77.0-r1 +7.77.0-r1 < 7.77.0-r3 +7.77.0-r3 < 7.78.0-r0 +7.78.0-r0 < 7.78.0-r1 +7.78.0-r1 < 7.78.0-r2 +7.78.0-r2 < 7.78.0-r3 +7.78.0-r3 < 7.79.0-r0 +7.79.0-r0 < 7.79.0-r1 +7.79.0-r1 < 7.79.0-r3 +7.79.0-r3 < 7.79.1-r0 +7.79.1-r0 < 7.79.1-r1 +7.79.1-r1 < 7.79.1-r2 +7.79.1-r2 < 7.79.1-r3 +7.79.1-r3 < 7.79.1-r4 +7.79.1-r4 < 7.79.1-r5 +7.79.1-r5 < 7.80.0-r0 +7.80.0-r0 < 7.80.0-r1 +7.80.0-r1 < 7.80.0-r2 +7.80.0-r2 < 7.80.0-r3 +7.80.0-r3 < 7.80.0-r4 +7.80.0-r4 < 7.80.0-r5 +7.80.0-r5 < 7.80.0-r6 +7.80.0-r6 < 7.81.0-r0 +7.81.0-r0 < 7.81.0-r1 +7.81.0-r1 < 7.82.0-r0 +7.82.0-r0 < 7.82.0-r1 +7.82.0-r1 < 7.83.0-r0 +7.83.0-r0 < 7.83.1-r0 +7.83.1-r0 < 7.83.1-r1 +7.83.1-r1 < 7.83.1-r2 +7.83.1-r2 < 7.83.1-r3 +7.83.1-r3 < 7.83.1-r4 +7.83.1-r4 < 7.83.1-r5 +7.83.1-r5 < 7.83.1-r6 +7.83.1-r6 < 7.84.0-r0 +7.84.0-r0 < 7.84.0-r1 +7.84.0-r1 < 7.84.0-r2 +7.84.0-r2 < 7.85.0-r0 +7.85.0-r0 < 7.86.0-r0 +7.86.0-r0 < 7.86.0-r1 +7.86.0-r1 < 7.87.0-r0 +7.87.0-r0 < 7.87.0-r1 +7.87.0-r1 < 7.87.0-r2 +7.87.0-r2 < 7.87.0-r3 +7.87.0-r3 < 7.88.0-r0 +7.88.0-r0 < 7.88.0-r1 +7.88.0-r1 < 7.88.1-r0 +7.88.1-r0 < 7.88.1-r1 +7.88.1-r1 < 8.0.0-r0 +8.0.0-r0 < 8.0.1-r0 +8.0.1-r0 < 8.0.1-r1 +8.0.1-r1 < 8.0.1-r2 +8.0.1-r2 < 8.0.1-r3 +8.0.1-r3 < 8.1.0-r0 +8.1.0-r0 < 8.1.0-r1 +8.1.0-r1 < 8.1.0-r2 +8.1.0-r2 < 8.1.0-r3 +8.1.0-r3 < 8.1.1-r0 +8.1.1-r0 < 8.1.1-r1 +8.1.1-r1 < 8.1.2-r0 +8.1.2-r0 < 8.1.2-r1 +8.1.2-r1 < 8.1.2-r2 +8.1.2-r2 < 8.2.0-r0 +8.2.0-r0 < 8.2.0-r1 +8.2.0-r1 < 8.2.1-r0 +8.2.1-r0 < 8.2.1-r1 +8.2.1-r1 < 8.3.0-r0 +8.3.0-r0 < 8.3.0-r1 +8.3.0-r1 < 8.4.0-r1 +1.612-r0 < 1.615-r0 +1.615-r0 < 1.616-r0 +1.616-r0 < 1.616-r1 +1.616-r1 < 1.618-r0 +1.618-r0 < 1.618-r1 +1.618-r1 < 1.622-r0 +1.622-r0 < 1.623-r0 +1.623-r0 < 1.625-r0 +1.625-r0 < 1.625-r1 +1.625-r1 < 1.627-r1 +1.627-r1 < 1.628-r0 +1.628-r0 < 1.630-r0 +1.630-r0 < 1.631-r0 +1.631-r0 < 1.631-r1 +1.631-r1 < 1.632-r0 +1.632-r0 < 1.633-r0 +1.633-r0 < 1.633-r1 +1.633-r1 < 1.634-r0 +1.634-r0 < 1.634-r1 +1.634-r1 < 1.636-r0 +1.636-r0 < 1.636-r1 +1.636-r1 < 1.637-r0 +1.637-r0 < 1.639-r0 +1.639-r0 < 1.640-r0 +1.640-r0 < 1.641-r0 +1.641-r0 < 1.642-r0 +1.642-r0 < 1.642-r1 +1.642-r1 < 1.642-r2 +6.02-r0 < 6.04-r0 +6.04-r0 < 6.06-r0 +6.06-r0 < 6.06-r1 +6.06-r1 < 6.07-r0 +6.07-r0 < 6.07-r1 +6.07-r1 < 6.09-r0 +6.09-r0 < 6.09-r1 +6.09-r1 < 6.10-r0 +6.10-r0 < 6.10-r1 +6.10-r1 < 6.10-r2 +6.10-r2 < 6.10-r3 +6.10-r3 < 6.10-r4 +6.10-r4 < 6.10-r5 +3.8.2-r0 < 3.8.2-r1 +3.8.2-r1 < 3.8.2-r2 +3.8.2-r2 < 3.8.2-r3 +3.8.2-r3 < 3.8.2-r4 +3.8.2-r4 < 3.9.5-r0 +3.9.5-r0 < 3.9.5-r1 +3.9.5-r1 < 4.0.1-r0 +4.0.1-r0 < 4.0.2-r0 +4.0.2-r0 < 4.0.2-r1 +4.0.2-r1 < 4.0.3-r0 +4.0.3-r0 < 4.0.3-r1 +4.0.3-r1 < 4.0.3-r2 +4.0.3-r2 < 4.0.3-r3 +4.0.3-r3 < 4.0.6-r0 +4.0.6-r0 < 4.0.6-r1 +4.0.6-r1 < 4.0.6-r2 +4.0.6-r2 < 4.0.6-r3 +4.0.6-r3 < 4.0.6-r4 +4.0.6-r4 < 4.0.7-r0 +4.0.7-r0 < 4.0.7-r1 +4.0.7-r1 < 4.0.7-r2 +4.0.7-r2 < 4.0.7-r3 +4.0.7-r3 < 4.0.8-r0 +4.0.8-r0 < 4.0.8-r1 +4.0.8-r1 < 4.0.8-r2 +4.0.8-r2 < 4.0.9-r0 +4.0.9-r0 < 4.0.9-r1 +4.0.9-r1 < 4.0.9-r2 +4.0.9-r2 < 4.0.9-r3 +4.0.9-r3 < 4.0.9-r4 +4.0.9-r4 < 4.0.9-r5 +4.0.9-r5 < 4.0.9-r6 +4.0.9-r6 < 4.0.9-r7 +4.0.9-r7 < 4.0.9-r8 +4.0.9-r8 < 4.0.10-r0 +4.0.10-r0 < 4.0.10-r1 +4.0.10-r1 < 4.0.10-r2 +4.0.10-r2 < 4.1.0-r0 +4.1.0-r0 < 4.1.0-r1 +4.1.0-r1 < 4.1.0-r2 +4.1.0-r2 < 4.2.0-r0 +4.2.0-r0 < 4.2.0-r1 +4.2.0-r1 < 4.2.0-r2 +4.2.0-r2 < 4.3.0-r0 +4.3.0-r0 < 4.3.0-r1 +4.3.0-r1 < 4.3.0-r2 +4.3.0-r2 < 4.4.0-r0 +4.4.0-r0 < 4.4.0-r1 +4.4.0-r1 < 4.5.0-r0 +4.5.0-r0 < 4.5.0-r1 +4.5.0-r1 < 4.5.0-r2 +4.5.0-r2 < 4.5.0-r3 +4.5.0-r3 < 4.5.0-r4 +2.6.1-r0 < 2.6.1-r1 +2.6.1-r1 < 2.6.1-r2 +2.6.1-r2 < 2.6.2-r0 +2.6.2-r0 < 2.6.2-r1 +2.6.2-r1 < 2.6.3-r0 +2.6.3-r0 < 2.6.4-r0 +2.6.4-r0 < 2.6.5-r0 +2.6.5-r0 < 2.6.5-r1 +2.6.5-r1 < 2.6.5-r2 +2.6.5-r2 < 2.6.5-r3 +2.6.5-r3 < 2.6.5-r4 +2.6.5-r4 < 2.6.5-r5 +2.6.5-r5 < 2.6.5-r6 +2.6.5-r6 < 2.6.5-r7 +2.6.5-r7 < 2.6.5-r8 +2.6.5-r8 < 2.7.2-r8 +2.7.2-r8 < 2.7.3-r8 +2.7.3-r8 < 2.7.5-r8 +2.7.5-r8 < 2.7.6-r8 +2.7.6-r8 < 2.7.7-r8 +2.7.7-r8 < 2.7.8-r8 +2.7.8-r8 < 2.7.9-r8 +2.7.9-r8 < 2.7.10-r8 +2.7.10-r8 < 2.7.11-r8 +2.7.11-r8 < 2.7.12-r8 +2.7.12-r8 < 2.7.13-r8 +2.7.13-r8 < 2.7.14-r8 +2.7.14-r8 < 2.7.15-r8 +2.7.15-r8 < 2.7.16-r8 +2.7.16-r8 < 2.7.17-r8 +5.7-r0 < 5.8-r0 +5.8-r0 < 5.8-r1 +5.8-r1 < 5.8-r2 +5.8-r2 < 5.8-r3 +5.8-r3 < 5.8-r4 +5.4.2.1-r0 < 5.4.2.1-r1 +5.4.2.1-r1 < 5.4.2.1-r2 +5.4.2.1-r2 < 5.4.2.1-r3 +5.4.2.1-r3 < 5.4.2.1-r4 +5.4.2.1-r4 < 5.5-r0 +5.5-r0 < 5.5-r1 +5.5-r1 < 5.5-r2 +5.5-r2 < 5.5-r3 +5.5-r3 < 5.5-r4 +5.5-r4 < 5.5-r5 +5.5-r5 < 5.6.1-r0 +5.6.1-r0 < 5.6.1-r1 +5.6.1-r1 < 5.6.1-r2 +5.6.1-r2 < 5.7-r0 +5.7-r0 < 5.7.1-r0 +5.7.1-r0 < 5.7.1-r1 +5.7.1-r1 < 5.7.1-r2 +5.7.1-r2 < 5.7.1-r3 +5.7.1-r3 < 5.7.1-r4 +5.7.1-r4 < 5.7.1-r5 +5.7.1-r5 < 5.7.1-r6 +5.7.1-r6 < 5.7.1-r7 +5.7.1-r7 < 5.7.2-r0 +5.7.2-r0 < 5.7.2-r1 +5.7.2-r1 < 5.7.2-r2 +5.7.2-r2 < 5.7.2.1-r0 +5.7.2.1-r0 < 5.7.2.1-r1 +5.7.2.1-r1 < 5.7.2.1-r2 +5.7.2.1-r2 < 5.7.2.1-r3 +5.7.2.1-r3 < 5.7.2.1-r4 +5.7.2.1-r4 < 5.7.3-r0 +5.7.3-r0 < 5.7.3-r1 +5.7.3-r1 < 5.7.3-r2 +5.7.3-r2 < 5.7.3-r3 +5.7.3-r3 < 5.7.3-r4 +5.7.3-r4 < 5.7.3-r5 +5.7.3-r5 < 5.7.3-r6 +5.7.3-r6 < 5.7.3-r7 +5.7.3-r7 < 5.7.3-r8 +5.7.3-r8 < 5.7.3-r9 +5.7.3-r9 < 5.7.3-r10 +5.7.3-r10 < 5.7.3-r11 +5.7.3-r11 < 5.8-r0 +5.8-r3 < 5.9-r0 +5.9-r0 < 5.9-r1 +5.9-r1 < 5.9-r2 +5.9-r2 < 5.9-r3 +5.9-r3 < 5.9-r4 +5.9-r4 < 5.9.1-r0 +5.9.1-r0 < 5.9.1-r1 +5.9.1-r1 < 5.9.1-r2 +5.9.1-r2 < 5.9.1-r3 +5.9.1-r3 < 5.9.1-r4 +5.9.1-r4 < 5.9.1-r5 +5.9.1-r5 < 5.9.1-r6 +5.9.1-r6 < 5.9.1-r7 +2.4.14-r0 < 2.4.14-r1 +2.4.14-r1 < 2.4.14-r2 +2.4.14-r2 < 2.4.16-r0 +2.4.16-r0 < 2.6.16-r0 +2.6.16-r0 < 2.6.17-r0 +2.6.17-r0 < 2.8.9-r0 +2.8.9-r0 < 2.8.9-r1 +2.8.9-r1 < 2.8.9-r2 +2.8.9-r2 < 2.8.10-r0 +2.8.10-r0 < 2.8.11-r0 +2.8.11-r0 < 2.8.12-r0 +2.8.12-r0 < 2.8.13-r0 +2.8.13-r0 < 2.8.14-r0 +2.8.14-r0 < 2.8.17-r0 +2.8.17-r0 < 2.8.19-r0 +2.8.19-r0 < 3.0.0-r0 +3.0.0-r0 < 3.0.0-r1 +3.0.0-r1 < 3.0.1-r0 +3.0.1-r0 < 3.0.2-r0 +3.0.2-r0 < 3.0.3-r0 +3.0.3-r0 < 3.0.4-r0 +3.0.4-r0 < 3.0.5-r0 +3.0.5-r0 < 3.0.5-r1 +3.0.5-r1 < 3.0.6-r0 +3.0.6-r0 < 3.0.7-r0 +3.0.7-r0 < 3.0.7-r1 +3.0.7-r1 < 3.2.0-r0 +3.2.0-r0 < 3.2.0-r1 +3.2.0-r1 < 3.2.1-r0 +3.2.1-r0 < 3.2.1-r1 +3.2.1-r1 < 3.2.3-r0 +3.2.3-r0 < 3.2.3-r1 +3.2.3-r1 < 3.2.4-r0 +3.2.4-r0 < 3.2.4-r1 +3.2.4-r1 < 3.2.5-r0 +3.2.5-r0 < 3.2.5-r1 +3.2.5-r1 < 3.2.7-r0 +3.2.7-r0 < 3.2.7-r1 +3.2.7-r1 < 3.2.8-r0 +3.2.8-r0 < 3.2.8-r1 +3.2.8-r1 < 3.2.9-r0 +3.2.9-r0 < 3.2.11-r1 +3.2.11-r1 < 4.0.2-r0 +4.0.2-r1 < 4.0.5-r0 +4.0.5-r0 < 4.0.5-r1 +4.0.5-r1 < 4.0.6-r0 +4.0.6-r1 < 4.0.8-r0 +4.0.8-r0 < 4.0.9-r0 +4.0.9-r2 < 4.0.10-r0 +4.0.10-r1 < 4.0.11-r0 +4.0.11-r0 < 4.0.11-r1 +4.0.11-r1 < 4.0.12-r0 +4.0.12-r0 < 4.0.12-r1 +4.0.12-r1 < 4.0.13-r0 +4.0.13-r0 < 4.0.13-r1 +4.0.13-r1 < 5.0.4-r0 +5.0.4-r0 < 5.0.4-r1 +5.0.4-r1 < 5.0.5-r0 +5.0.5-r0 < 5.0.5-r1 +5.0.5-r1 < 5.0.7-r0 +5.0.7-r0 < 5.0.7-r1 +5.0.7-r1 < 5.0.8-r0 +5.0.8-r0 < 5.0.8-r1 +5.0.8-r1 < 5.0.9-r0 +5.0.9-r0 < 5.0.9-r1 +5.0.9-r1 < 5.0.10-r1 +5.0.10-r1 < 5.0.11-r1 +5.0.11-r1 < 5.0.13-r1 +5.0.13-r1 < 6.0.1-r0 +6.0.1-r0 < 6.0.1-r1 +6.0.1-r1 < 6.0.4-r0 +6.0.4-r0 < 6.0.4-r1 +6.0.4-r1 < 6.0.5-r0 +6.0.5-r0 < 6.0.5-r1 +6.0.5-r1 < 6.0.9-r0 +6.0.9-r0 < 6.0.9-r1 +6.0.9-r1 < 6.0.10-r0 +6.0.10-r0 < 6.0.10-r1 +6.0.10-r1 < 6.0.11-r1 +6.0.11-r1 < 6.0.13-r1 +6.0.13-r1 < 6.0.14-r1 +6.0.14-r1 < 6.0.15-r1 +6.0.15-r1 < 6.2.0-r0 +6.2.0-r0 < 6.2.0-r1 +6.2.0-r1 < 6.2.1-r0 +6.2.1-r0 < 6.2.1-r1 +6.2.1-r1 < 6.2.2-r0 +6.2.2-r0 < 6.2.2-r1 +6.2.2-r1 < 6.2.3-r0 +6.2.3-r0 < 6.2.3-r1 +6.2.3-r1 < 6.2.4-r0 +6.2.4-r0 < 6.2.4-r1 +6.2.4-r1 < 6.2.5-r0 +6.2.5-r0 < 6.2.5-r1 +6.2.5-r1 < 6.2.6-r0 +6.2.6-r0 < 6.2.6-r1 +6.2.6-r1 < 6.2.7-r0 +6.2.7-r0 < 6.2.7-r1 +6.2.7-r1 < 6.2.9-r1 +6.2.9-r1 < 6.2.12-r1 +6.2.12-r1 < 6.2.13-r1 +6.2.13-r1 < 7.0.0-r0 +7.0.0-r0 < 7.0.2-r0 +7.0.2-r0 < 7.0.3-r0 +7.0.3-r0 < 7.0.4-r0 +7.0.4-r0 < 7.0.4-r1 +7.0.4-r1 < 7.0.4-r2 +7.0.4-r2 < 7.0.5-r0 +7.0.5-r0 < 7.0.5-r1 +7.0.5-r1 < 7.0.5-r2 +7.0.5-r2 < 7.0.6-r0 +7.0.6-r0 < 7.0.6-r2 +7.0.6-r2 < 7.0.7-r0 +7.0.7-r0 < 7.0.7-r1 +7.0.7-r1 < 7.0.7-r2 +7.0.7-r2 < 7.0.8-r0 +7.0.8-r0 < 7.0.8-r1 +7.0.8-r1 < 7.0.8-r2 +7.0.8-r2 < 7.0.9-r0 +7.0.9-r0 < 7.0.9-r1 +7.0.9-r1 < 7.0.9-r2 +7.0.9-r2 < 7.0.10-r0 +7.0.10-r0 < 7.0.10-r1 +7.0.10-r1 < 7.0.10-r2 +7.0.10-r2 < 7.0.11-r1 +7.0.11-r1 < 7.0.11-r2 +7.0.11-r2 < 7.0.12-r1 +7.0.12-r1 < 7.0.12-r2 +7.0.12-r2 < 7.0.13-r1 +7.0.13-r1 < 7.0.13-r2 +7.0.13-r2 < 7.0.14-r1 +7.0.14-r1 < 7.0.14-r2 +7.0.14-r2 < 7.2.0-r1 +7.2.0-r1 < 7.2.1-r1 +7.2.1-r1 < 7.2.2-r1 +7.2.2-r1 < 7.2.3-r1 +0.12.3-r0 < 0.13.2-r0 +0.13.2-r0 < 0.13.5-r0 +0.13.5-r0 < 0.13.5-r1 +0.13.5-r1 < 0.13.6-r0 +0.13.6-r0 < 0.13.7-r0 +0.13.7-r0 < 0.13.8-r0 +0.13.8-r0 < 0.14.3-r0 +0.14.3-r0 < 0.14.4-r0 +0.14.4-r0 < 0.14.5-r0 +0.14.5-r0 < 0.14.6-r0 +0.14.6-r0 < 0.14.7-r0 +0.14.7-r0 < 0.15.2-r0 +0.15.2-r0 < 0.15.2-r1 +0.15.2-r1 < 0.15.4-r0 +0.15.4-r0 < 0.15.4-r1 +0.15.4-r1 < 0.16.0-r0 +0.16.0-r0 < 0.16.0-r1 +0.16.0-r1 < 0.16.1-r0 +0.16.1-r0 < 0.16.1-r1 +0.16.1-r1 < 0.16.2-r0 +0.16.2-r0 < 0.16.2-r1 +0.16.2-r1 < 0.17.0-r0 +0.17.0-r0 < 0.17.0-r1 +0.17.0-r1 < 0.17.1-r0 +0.17.1-r0 < 0.17.1-r1 +0.17.1-r1 < 0.17.2-r0 +0.17.2-r0 < 0.17.2-r1 +0.17.2-r1 < 0.18.2-r1 +0.18.2-r1 < 0.18.5-r1 +1.11-r0 < 1.11-r1 +1.11-r1 < 1.11-r2 +1.11-r2 < 1.11.2-r0 +1.11.2-r0 < 1.11.2-r1 +1.11.2-r1 < 1.11.2-r2 +1.11.2-r2 < 1.11.3-r0 +1.11.3-r0 < 1.11.4-r0 +1.11.4-r0 < 1.12.1-r0 +1.12.1-r0 < 1.12.2-r0 +1.12.2-r0 < 1.13-r0 +1.13-r0 < 1.13-r1 +1.13-r1 < 1.13.1-r0 +1.13.1-r0 < 1.13.1-r1 +1.13.1-r1 < 1.13.1-r2 +1.13.1-r2 < 1.13.2-r0 +1.13.2-r0 < 1.13.2-r1 +1.13.2-r1 < 1.13.2-r2 +1.13.2-r2 < 1.14-r0 +1.14-r0 < 1.14-r1 +1.14-r1 < 1.14-r2 +1.14-r2 < 1.14-r3 +1.14-r3 < 1.14.3-r0 +1.14.3-r0 < 1.14.3-r1 +1.14.3-r1 < 1.14.3-r2 +1.14.3-r2 < 1.15.1-r0 +1.15.1-r0 < 1.15.2-r0 +1.15.2-r0 < 1.15.2-r1 +1.15.2-r1 < 1.15.2-r2 +1.15.2-r2 < 1.15.3-r0 +1.15.3-r0 < 1.15.3-r1 +1.15.3-r1 < 1.15.3-r2 +1.15.3-r2 < 1.15.4-r0 +1.15.4-r0 < 1.15.4-r1 +1.15.4-r1 < 1.15.5-r0 +1.15.5-r0 < 1.15.5-r1 +1.15.5-r1 < 1.17-r0 +1.17-r0 < 1.17-r1 +1.17-r1 < 1.17.1-r0 +1.17.1-r0 < 1.17.1-r1 +1.17.1-r1 < 1.18-r0 +1.18-r0 < 1.18-r1 +1.18-r1 < 1.18.1-r0 +1.18.1-r0 < 1.18.1-r1 +1.18.1-r1 < 1.18.2-r0 +1.18.2-r0 < 1.18.2-r1 +1.18.2-r1 < 1.18.3-r0 +1.18.3-r0 < 1.18.3-r1 +1.18.3-r1 < 1.18.4-r0 +1.18.4-r0 < 1.18.4-r1 +1.18.4-r1 < 1.19.2-r0 +1.19.2-r0 < 1.19.2-r1 +1.19.2-r1 < 1.19.2-r2 +1.19.2-r2 < 1.19.2-r3 +1.19.2-r3 < 1.19.2-r4 +1.19.2-r4 < 1.19.3-r0 +1.19.3-r0 < 1.19.3-r1 +1.19.3-r1 < 1.19.3-r2 +1.19.3-r2 < 1.19.3-r4 +1.19.3-r4 < 1.20-r2 +5.1_p1-r1 < 5.1_p1-r2 +5.1_p1-r2 < 5.1p1-r0 +5.1p1-r0 < 5.2_p1-r0 +5.2_p1-r0 < 5.2_p1-r1 +5.2_p1-r1 < 5.2_p1-r2 +5.2_p1-r2 < 5.2_p1-r3 +5.2_p1-r3 < 5.3_p1-r3 +5.3_p1-r3 < 5.4_p1-r3 +5.4_p1-r3 < 5.5_p1-r3 +5.5_p1-r3 < 5.6_p1-r3 +5.6_p1-r3 < 5.8_p1-r3 +5.8_p1-r3 < 5.8_p2-r3 +5.8_p2-r3 < 5.9_p1-r3 +5.9_p1-r3 < 6.0_p1-r3 +6.0_p1-r3 < 6.1_p1-r3 +6.1_p1-r3 < 6.2_p1-r3 +6.2_p1-r3 < 6.2_p2-r3 +6.2_p2-r3 < 6.3_p1-r3 +6.3_p1-r3 < 6.4_p1-r3 +6.4_p1-r3 < 6.6_p1-r3 +6.6_p1-r3 < 6.7_p1-r3 +6.7_p1-r3 < 6.8_p1-r3 +6.8_p1-r3 < 6.9_p1-r3 +6.9_p1-r3 < 7.1_p1-r3 +7.1_p1-r3 < 7.1_p2-r3 +7.1_p2-r3 < 7.2_p1-r3 +7.2_p1-r3 < 7.2_p2-r3 +7.2_p2-r3 < 7.3_p1-r3 +7.3_p1-r3 < 7.4_p1-r3 +7.4_p1-r3 < 7.5_p1-r3 +7.5_p1-r3 < 7.6_p1-r3 +7.6_p1-r3 < 7.7_p1-r3 +7.7_p1-r3 < 7.8_p1-r3 +7.8_p1-r3 < 7.9_p1-r3 +7.9_p1-r3 < 8.0_p1-r3 +8.0_p1-r3 < 8.1_p1-r3 +8.1_p1-r3 < 8.2_p1-r3 +8.2_p1-r3 < 8.3_p1-r3 +8.3_p1-r3 < 8.4_p1-r3 +8.4_p1-r3 < 8.5_p1-r3 +8.5_p1-r3 < 8.6_p1-r3 +8.6_p1-r3 < 8.8_p1-r3 +8.8_p1-r3 < 8.9_p1-r3 +8.9_p1-r3 < 9.0_p1-r3 +9.0_p1-r3 < 9.1_p1-r3 +9.1_p1-r3 < 9.2_p1-r3 +9.2_p1-r3 < 9.3_p1-r3 +9.3_p1-r3 < 9.3_p2-r3 +9.3_p2-r3 < 9.4_p1-r3 +9.4_p1-r3 < 9.5_p1-r3 +2.0.35-r0 < 2.0.35-r1 +2.0.35-r1 < 2.0.35-r2 +2.0.35-r2 < 2.0.36_rc1-r0 +2.0.36_rc1-r0 < 2.0.36_rc1-r1 +2.0.36_rc1-r1 < 2.0.36_rc1-r2 +2.0.36_rc1-r2 < 2.0.36_rc1-r3 +2.0.36_rc1-r3 < 2.0.36_rc1-r4 +2.0.36_rc1-r4 < 2.0.36_rc1-r5 +2.0.36_rc1-r5 < 2.0.36_rc1-r6 +2.0.36_rc1-r6 < 2.0.36_rc1-r7 +2.0.36_rc1-r7 < 2.0.36_rc1-r8 +2.0.36_rc1-r8 < 2.0.36_rc1-r9 +2.0.36_rc1-r9 < 2.1.0-r0 +2.1.1-r0 < 2.1.1-r2 +2.1.1-r2 < 2.2.1-r0 +2.2.1-r2 < 2.2.3-r0 +2.2.4-r0 < 2.2.4-r1 +2.2.4-r1 < 2.2.4-r2 +2.2.4-r2 < 2.2.5-r0 +2.2.5-r0 < 2.2.5-r1 +2.2.5-r1 < 2.2.5-r2 +2.2.5-r2 < 2.3.0-r0 +2.8.4-r0 < 2.8.4-r1 +2.8.4-r1 < 2.8.4-r2 +2.8.4-r2 < 2.8.5-r0 +2.8.5-r0 < 3.0.2-r0 +3.0.4-r0 < 3.1.2-r0 +3.1.2-r0 < 3.1.2-r1 +3.1.2-r1 < 3.1.2-r2 +3.1.2-r2 < 3.2.0-r0 +3.2.0-r0 < 3.2.0-r2 +3.2.0-r2 < 3.2.1-r0 +3.2.1-r1 < 3.2.1-r2 +3.2.1-r2 < 3.2.2-r0 +3.2.2-r0 < 3.2.2-r1 +3.2.2-r1 < 3.3.1-r0 +3.3.1-r0 < 3.3.1-r1 +3.3.1-r1 < 3.3.2-r0 +3.3.2-r0 < 3.3.2-r1 +3.3.2-r1 < 3.3.2-r2 +3.3.2-r2 < 3.3.2-r3 +3.3.2-r3 < 3.3.2-r4 +3.3.2-r4 < 3.3.3-r0 +3.3.3-r0 < 3.3.3-r4 +3.3.3-r4 < 3.4.0-r0 +3.4.0-r0 < 3.4.0-r4 +3.4.0-r4 < 3.4.1-r0 +3.4.1-r0 < 3.4.1-r4 +3.4.1-r4 < 3.4.2-r0 +3.4.2-r0 < 3.4.2-r4 +3.4.2-r4 < 3.4.3-r0 +3.4.3-r0 < 3.4.3-r4 +3.4.3-r4 < 3.5.0-r0 +3.5.0-r0 < 3.5.0-r4 +3.5.0-r4 < 3.5.1-r0 +3.5.1-r0 < 3.5.1-r4 +3.5.1-r4 < 3.5.2-r0 +3.5.2-r0 < 3.5.2-r1 +3.5.2-r1 < 3.5.2-r2 +3.5.2-r2 < 3.5.2-r4 +3.5.2-r4 < 3.6.0-r0 +3.6.0-r0 < 3.6.1-r0 +3.6.1-r0 < 3.6.1-r1 +3.6.1-r1 < 3.6.1-r2 +3.6.1-r2 < 3.6.2-r0 +3.6.2-r0 < 3.6.2-r1 +3.6.2-r1 < 3.6.2-r2 +3.6.2-r2 < 3.6.2-r3 +3.6.2-r3 < 3.7.0-r0 +3.7.0-r0 < 3.7.1-r0 +3.7.1-r0 < 3.7.2-r0 +3.7.2-r0 < 3.7.2-r1 +1.13-r0 < 1.14-r0 +1.14-r0 < 1.15-r0 +1.15-r0 < 1.16-r0 +1.16-r0 < 1.16-r1 +1.16-r1 < 1.16-r2 +1.16-r2 < 1.16-r3 +1.16-r3 < 1.19-r0 +1.19-r0 < 1.19-r1 +1.19-r1 < 1.22-r0 +1.22-r0 < 1.22-r1 +1.22-r1 < 1.24-r0 +1.24-r0 < 1.25-r0 +1.25-r0 < 1.25-r1 +1.25-r1 < 1.26-r1 +1.26-r1 < 1.28-r0 +1.28-r0 < 1.28-r1 +1.28-r1 < 1.29-r0 +1.29-r0 < 1.29-r1 +1.29-r1 < 1.30-r0 +1.30-r0 < 1.30-r1 +1.30-r1 < 1.31-r1 +1.31-r1 < 1.32-r0 +1.32-r0 < 1.32-r1 +3.98.2-r0 < 3.98.3-r0 +3.98.3-r0 < 3.98.3-r1 +3.98.3-r1 < 3.98.4-r0 +3.98.4-r0 < 3.98.4-r1 +3.98.4-r1 < 3.98.4-r2 +3.98.4-r2 < 3.98.4-r3 +3.98.4-r3 < 3.98.4-r4 +3.98.4-r4 < 3.99.1-r0 +3.99.1-r0 < 3.99.1-r4 +3.99.1-r4 < 3.99.2-r0 +3.99.2-r0 < 3.99.2-r4 +3.99.2-r4 < 3.99.3-r0 +3.99.3-r0 < 3.99.3-r4 +3.99.3-r4 < 3.99.4-r0 +3.99.4-r0 < 3.99.4-r4 +3.99.4-r4 < 3.99.5-r0 +3.99.5-r0 < 3.99.5-r1 +3.99.5-r1 < 3.99.5-r2 +3.99.5-r2 < 3.99.5-r3 +3.99.5-r3 < 3.99.5-r4 +3.99.5-r4 < 3.99.5-r5 +5.5.41-r0 < 5.5.41-r1 +5.5.41-r1 < 5.5.41-r2 +5.5.41-r2 < 5.5.42-r0 +5.5.42-r0 < 5.5.42-r1 +5.5.42-r1 < 5.5.42-r2 +5.5.42-r2 < 5.5.42-r3 +5.5.42-r3 < 5.5.42-r4 +5.5.42-r4 < 5.5.43-r0 +5.5.43-r0 < 5.5.43-r1 +5.5.43-r1 < 5.5.43-r2 +5.5.43-r2 < 5.5.43-r3 +5.5.43-r3 < 5.5.43-r4 +5.5.43-r4 < 5.5.43-r5 +5.5.43-r5 < 5.5.46-r3 +5.5.46-r3 < 5.5.47-r3 +5.5.47-r3 < 5.5.51-r3 +5.5.51-r3 < 5.5.53-r3 +5.5.53-r3 < 10.0.21-r0 +10.0.21-r0 < 10.0.21-r1 +10.0.21-r1 < 10.0.21-r2 +10.0.21-r2 < 10.1.8-r0 +10.1.8-r0 < 10.1.8-r1 +10.1.8-r1 < 10.1.9-r0 +10.1.9-r0 < 10.1.9-r1 +10.1.9-r1 < 10.1.9-r2 +10.1.9-r2 < 10.1.9-r3 +10.1.9-r3 < 10.1.11-r0 +10.1.11-r0 < 10.1.11-r1 +10.1.11-r1 < 10.1.12-r0 +10.1.12-r0 < 10.1.12-r1 +10.1.12-r1 < 10.1.13-r0 +10.1.13-r0 < 10.1.13-r1 +10.1.13-r1 < 10.1.14-r0 +10.1.14-r0 < 10.1.14-r1 +10.1.14-r1 < 10.1.14-r2 +10.1.14-r2 < 10.1.14-r3 +10.1.14-r3 < 10.1.16-r0 +10.1.16-r0 < 10.1.17-r0 +10.1.17-r0 < 10.1.17-r1 +10.1.17-r1 < 10.1.17-r3 +10.1.17-r3 < 10.1.18-r0 +10.1.18-r0 < 10.1.18-r1 +10.1.18-r1 < 10.1.18-r3 +10.1.18-r3 < 10.1.19-r0 +10.1.19-r0 < 10.1.19-r1 +10.1.19-r1 < 10.1.19-r3 +10.1.19-r3 < 10.1.20-r0 +10.1.20-r0 < 10.1.20-r1 +10.1.20-r1 < 10.1.21-r0 +10.1.21-r0 < 10.1.21-r1 +10.1.21-r1 < 10.1.21-r3 +10.1.21-r3 < 10.1.22-r0 +10.1.22-r0 < 10.1.22-r1 +10.1.22-r1 < 10.1.22-r2 +10.1.22-r2 < 10.1.22-r3 +10.1.22-r3 < 10.1.24-r0 +10.1.24-r0 < 10.1.26-r0 +10.1.26-r0 < 10.1.26-r1 +10.1.26-r1 < 10.1.26-r3 +10.1.26-r3 < 10.1.28-r0 +10.1.28-r0 < 10.1.28-r1 +10.1.28-r1 < 10.1.28-r2 +10.1.28-r2 < 10.1.31-r0 +10.1.31-r0 < 10.1.32-r0 +10.1.32-r0 < 10.1.32-r1 +10.1.32-r1 < 10.1.37-r0 +10.1.37-r0 < 10.1.37-r1 +10.1.37-r1 < 10.1.38-r0 +10.1.38-r0 < 10.1.38-r1 +10.1.38-r1 < 10.1.40-r1 +10.1.40-r1 < 10.2.13-r0 +10.2.13-r0 < 10.2.13-r1 +10.2.13-r1 < 10.2.14-r0 +10.2.14-r0 < 10.2.14-r1 +10.2.14-r1 < 10.2.14-r2 +10.2.14-r2 < 10.2.15-r0 +10.2.15-r0 < 10.2.19-r0 +10.2.19-r0 < 10.2.19-r1 +10.2.19-r1 < 10.2.22-r0 +10.2.22-r0 < 10.2.24-r0 +10.2.24-r0 < 10.2.26-r0 +10.2.26-r0 < 10.2.26-r1 +10.2.26-r1 < 10.2.29-r1 +10.2.29-r1 < 10.2.31-r1 +10.2.31-r1 < 10.3.9-r0 +10.3.9-r0 < 10.3.9-r1 +10.3.9-r1 < 10.3.9-r2 +10.3.9-r2 < 10.3.10-r0 +10.3.10-r0 < 10.3.10-r1 +10.3.10-r1 < 10.3.11-r0 +10.3.11-r0 < 10.3.12-r0 +10.3.12-r0 < 10.3.12-r1 +10.3.12-r1 < 10.3.12-r2 +10.3.12-r2 < 10.3.13-r0 +10.3.13-r0 < 10.3.13-r1 +10.3.13-r1 < 10.3.13-r2 +10.3.13-r2 < 10.3.13-r3 +10.3.13-r3 < 10.3.13-r4 +10.3.13-r4 < 10.3.15-r0 +10.3.15-r0 < 10.3.15-r1 +10.3.15-r1 < 10.3.15-r4 +10.3.15-r4 < 10.3.16-r0 +10.3.16-r0 < 10.3.16-r1 +10.3.16-r1 < 10.3.16-r4 +10.3.16-r4 < 10.3.17-r1 +10.3.17-r1 < 10.3.17-r4 +10.3.17-r4 < 10.3.18-r4 +10.3.18-r4 < 10.3.20-r1 +10.3.20-r1 < 10.3.20-r4 +10.3.20-r4 < 10.3.22-r1 +10.3.22-r1 < 10.3.22-r4 +10.3.22-r4 < 10.3.23-r1 +10.3.23-r1 < 10.3.23-r4 +10.3.23-r4 < 10.3.25-r4 +10.3.25-r4 < 10.3.27-r4 +10.3.27-r4 < 10.3.28-r4 +10.3.28-r4 < 10.4.6-r0 +10.4.6-r0 < 10.4.6-r1 +10.4.6-r1 < 10.4.7-r0 +10.4.7-r0 < 10.4.8-r0 +10.4.8-r0 < 10.4.10-r0 +10.4.10-r0 < 10.4.10-r1 +10.4.10-r1 < 10.4.11-r0 +10.4.11-r0 < 10.4.12-r0 +10.4.12-r0 < 10.4.13-r0 +10.4.13-r0 < 10.4.13-r1 +10.4.13-r1 < 10.4.14-r0 +10.4.14-r0 < 10.4.14-r1 +10.4.14-r1 < 10.4.15-r0 +10.4.15-r0 < 10.4.17-r0 +10.4.17-r0 < 10.4.17-r1 +10.4.17-r1 < 10.4.18-r1 +10.4.18-r1 < 10.4.19-r1 +10.4.19-r1 < 10.4.21-r1 +10.4.21-r1 < 10.4.22-r1 +10.4.22-r1 < 10.4.24-r1 +10.4.24-r1 < 10.5.5-r0 +10.5.5-r0 < 10.5.5-r1 +10.5.5-r1 < 10.5.6-r0 +10.5.6-r0 < 10.5.6-r1 +10.5.6-r1 < 10.5.8-r0 +10.5.8-r0 < 10.5.8-r1 +10.5.8-r1 < 10.5.9-r0 +10.5.9-r0 < 10.5.9-r1 +10.5.9-r1 < 10.5.10-r1 +10.5.10-r1 < 10.5.11-r0 +10.5.11-r0 < 10.5.11-r1 +10.5.11-r1 < 10.5.12-r1 +10.5.12-r1 < 10.5.13-r1 +10.5.13-r1 < 10.5.15-r1 +10.5.15-r1 < 10.5.16-r1 +10.5.16-r1 < 10.6.3-r0 +10.6.3-r0 < 10.6.4-r0 +10.6.4-r0 < 10.6.4-r1 +10.6.4-r1 < 10.6.4-r2 +10.6.4-r2 < 10.6.7-r0 +10.6.7-r0 < 10.6.7-r2 +10.6.7-r2 < 10.6.8-r0 +10.6.8-r0 < 10.6.8-r1 +10.6.8-r1 < 10.6.8-r2 +10.6.8-r2 < 10.6.9-r0 +10.6.9-r0 < 10.6.9-r1 +10.6.9-r1 < 10.6.9-r2 +10.6.9-r2 < 10.6.10-r0 +10.6.10-r0 < 10.6.10-r1 +10.6.10-r1 < 10.6.10-r2 +10.6.10-r2 < 10.6.11-r0 +10.6.11-r0 < 10.6.11-r1 +10.6.11-r1 < 10.6.12-r0 +10.6.12-r0 < 10.6.12-r1 +10.6.12-r1 < 10.6.12-r2 +10.6.12-r2 < 10.6.13-r1 +10.6.13-r1 < 10.6.13-r2 +10.6.13-r2 < 10.6.14-r1 +10.6.14-r1 < 10.6.14-r2 +10.6.14-r2 < 10.11.2-r0 +10.11.2-r0 < 10.11.2-r1 +10.11.2-r1 < 10.11.2-r2 +10.11.2-r2 < 10.11.2-r3 +10.11.2-r3 < 10.11.2-r4 +10.11.2-r4 < 10.11.2-r5 +10.11.2-r5 < 10.11.2-r6 +10.11.2-r6 < 10.11.3-r0 +10.11.3-r0 < 10.11.3-r1 +10.11.3-r1 < 10.11.3-r6 +10.11.3-r6 < 10.11.4-r0 +10.11.4-r0 < 10.11.4-r6 +10.11.4-r6 < 10.11.5-r0 +10.11.5-r0 < 10.11.5-r1 +10.11.5-r1 < 10.11.5-r2 +10.11.5-r2 < 10.11.5-r3 +10.11.5-r3 < 10.11.5-r6 +4.0.035-r3 < 4.1.002-r3 +4.1.002-r3 < 4.1.005-r3 +4.1.005-r3 < 4.1.007-r3 +4.1.007-r3 < 4.1.009-r3 +4.1.009-r3 < 4.2.008-r3 +4.2.008-r3 < 4.2.010-r3 +4.2.010-r3 < 4.2.020-r3 +4.2.020-r3 < 4.2.024-r3 +4.2.024-r3 < 4.2.028-r3 +4.2.028-r3 < 4.2.029-r3 +4.2.029-r3 < 4.2.036-r3 +4.2.036-r3 < 4.2.037-r3 +4.2.037-r3 < 4.2.039-r3 +4.2.039-r3 < 4.2.042-r3 +4.2.042-r3 < 4.2.045-r3 +4.2.045-r3 < 4.3-r3 +4.3-r3 < 4.3.011-r3 +4.3.011-r3 < 4.3.018-r3 +4.3.018-r3 < 4.3.025-r3 +4.3.025-r3 < 4.3.026-r3 +4.3.026-r3 < 4.3.27-r3 +4.3.27-r3 < 4.3.28-r3 +4.3.28-r3 < 4.3.29-r3 +4.3.29-r3 < 4.3.30-r3 +4.3.30-r3 < 4.3.33-r3 +4.3.33-r3 < 4.3.42-r3 +4.3.42-r3 < 4.3.46-r3 +4.3.46-r3 < 4.3.48-r3 +2.7.6-r0 < 2.7.6-r1 +2.7.6-r1 < 2.7.6-r2 +2.7.6-r2 < 2.7.6-r3 +2.7.6-r3 < 2.7.6-r4 +2.7.6-r4 < 2.7.6-r5 +2.7.6-r5 < 2.7.6-r6 +2.7.6-r6 < 2.7.6-r7 +2.7.6-r7 < 2.7.6-r8 +2.7.6-r8 < 2.7.6-r9 +2.7.6-r9 < 2.7.6-r10 +2.7.6-r10 < 2.7.6-r11 +2.7.6-r11 < 2.7.6-r12 +2.7.6-r12 < 2.7.7-r0 +2.7.7-r0 < 2.7.7-r1 +2.7.7-r1 < 2.7.7-r2 +2.7.7-r2 < 2.7.7-r3 +2.7.7-r3 < 2.7.7-r4 +2.7.7-r4 < 2.7.7-r5 +2.7.7-r5 < 2.7.9-r0 +2.7.9-r0 < 2.7.9-r1 +2.7.9-r1 < 2.7.9-r2 +2.7.9-r2 < 2.7.9-r3 +2.7.9-r3 < 2.7.9-r4 +2.7.9-r4 < 3.2.0.12-r1 +3.2.0.12-r1 < 3.2.0.12-r2 +3.2.0.12-r2 < 3.2.0.12-r3 +3.2.0.12-r3 < 3.2.0.12-r4 +3.2.0.12-r4 < 3.2.0.13-r0 +3.2.0.13-r0 < 3.2.0.16-r0 +3.2.0.16-r0 < 3.2.0.17-r0 +3.2.0.17-r0 < 3.2.0.17-r1 +3.2.0.17-r1 < 3.2.0.17-r2 +3.2.0.17-r2 < 3.2.0.18-r0 +3.2.0.18-r0 < 3.2.0.18-r1 +3.2.0.18-r1 < 3.2.0.19-r0 +3.2.0.19-r0 < 3.2.0.19-r1 +3.2.0.19-r1 < 3.2.2-r0 +3.2.2-r0 < 3.2.3-r0 +3.2.3-r0 < 3.2.4-r0 +3.2.4-r0 < 3.2.5-r0 +3.2.5-r0 < 3.2.6-r0 +3.2.6-r0 < 3.2.6-r1 +3.2.6-r1 < 3.2.7-r1 +3.2.7-r1 < 3.2.7-r2 +3.2.7-r2 < 3.3.2-r0 +3.3.2-r0 < 3.3.3-r0 +3.3.3-r0 < 3.3.4-r0 +3.3.4-r0 < 3.3.5-r0 +3.3.5-r0 < 3.3.6-r0 +3.3.6-r0 < 3.3.7-r0 +3.3.7-r0 < 3.3.8-r0 +3.3.8-r0 < 3.3.8-r1 +3.3.8-r1 < 3.3.9-r0 +3.3.9-r0 < 3.3.10-r0 +3.3.10-r0 < 3.3.11-r0 +3.3.11-r0 < 3.3.11-r1 +3.3.11-r1 < 3.4.5-r0 +3.4.5-r0 < 3.4.6-r0 +3.4.6-r0 < 3.4.6-r1 +3.4.6-r1 < 3.4.7-r0 +3.4.7-r0 < 3.4.8-r0 +3.4.8-r0 < 3.4.9-r0 +3.4.9-r0 < 3.4.10-r0 +3.4.10-r0 < 3.4.11-r0 +3.4.11-r0 < 3.4.12-r0 +3.4.12-r0 < 3.5.2-r0 +3.5.2-r1 < 3.5.3-r0 +3.5.3-r0 < 3.5.4-r0 +3.5.4-r0 < 3.5.4-r1 +3.5.4-r1 < 3.5.4-r2 +3.5.4-r2 < 3.5.5-r0 +3.5.5-r0 < 3.5.6-r0 +3.5.6-r0 < 3.5.6-r1 +3.5.6-r1 < 3.5.7-r0 +3.5.7-r0 < 3.5.8-r0 +3.5.8-r0 < 3.5.10-r0 +3.5.10-r0 < 3.5.11-r0 +3.5.11-r0 < 3.5.12-r0 +3.5.12-r0 < 3.5.13-r0 +3.5.13-r0 < 3.5.14-r0 +3.5.14-r0 < 3.5.14-r1 +3.5.14-r1 < 3.5.15-r0 +3.5.15-r0 < 3.5.15-r1 +3.5.15-r1 < 3.5.16-r0 +3.5.16-r0 < 3.5.17-r0 +3.5.17-r0 < 3.5.17-r1 +3.5.17-r1 < 3.5.18-r0 +3.5.18-r0 < 3.5.18-r1 +3.5.18-r1 < 3.5.19-r0 +3.5.19-r0 < 3.5.19-r1 +3.5.19-r1 < 3.5.20-r0 +3.5.20-r0 < 3.5.20-r1 +3.5.20-r1 < 3.5.20-r2 +3.5.20-r2 < 3.5.22-r0 +3.5.22-r0 < 3.5.22-r2 +3.5.22-r2 < 3.5.23-r0 +3.5.23-r0 < 3.5.23-r1 +3.5.23-r1 < 3.5.23-r2 +3.5.23-r2 < 3.5.23-r3 +3.5.23-r3 < 3.5.23-r4 +3.5.23-r4 < 3.5.27-r0 +3.5.27-r0 < 3.5.27-r1 +3.5.27-r1 < 3.5.27-r2 +3.5.27-r2 < 3.5.28-r0 +3.5.28-r0 < 4.2-r0 +4.2-r0 < 4.2-r1 +4.2-r1 < 4.4-r0 +4.4-r0 < 4.4-r1 +4.4-r1 < 4.6-r0 +4.6-r0 < 4.6-r1 +4.6-r1 < 4.8-r0 +4.8-r0 < 4.8-r1 +4.8-r1 < 4.9-r0 +4.9-r0 < 4.9-r1 +4.9-r1 < 4.10-r0 +4.10-r0 < 4.10-r1 +4.10-r1 < 4.11-r0 +4.11-r0 < 4.11-r1 +4.11-r1 < 4.12-r0 +4.12-r0 < 4.12-r1 +4.12-r1 < 4.13-r0 +4.13-r0 < 4.13-r1 +4.13-r1 < 4.14-r1 +4.14-r1 < 4.15-r1 +4.15-r1 < 5.0.4-r0 +5.0.5-r1 < 5.0.6-r0 +5.0.6-r0 < 5.0.6-r1 +5.0.6-r1 < 5.0.7-r0 +5.0.7-r1 < 5.1-r0 +5.1-r0 < 5.1-r1 +5.1-r1 < 5.2-r0 +5.2-r0 < 5.3-r0 +5.3-r0 < 5.4-r0 +5.4-r0 < 5.4.1-r0 +5.4.1-r0 < 5.5-r0 +5.5-r0 < 5.6-r0 +5.6-r0 < 5.6-r1 +5.6-r1 < 5.6-r2 +5.6-r2 < 5.6-r3 +5.6-r3 < 5.7-r0 +5.7-r0 < 5.7-r1 +5.7-r1 < 5.9-r0 +5.9-r1 < 6.1-r0 +6.1-r0 < 6.2-r0 +6.2-r0 < 6.2-r1 +6.2-r1 < 6.3-r1 +6.3-r1 < 6.4-r1 +6.4-r1 < 6.5-r1 +1.2.8-r0 < 1.2.9-r0 +1.2.9-r0 < 1.3.0-r0 +1.3.0-r0 < 1.4.0-r0 +1.4.0-r0 < 1.4.1-r0 +1.4.1-r0 < 1.4.2-r0 +1.4.2-r0 < 1.4.2-r1 +1.4.2-r1 < 1.4.3-r0 +1.4.3-r0 < 1.4.3-r1 +1.4.3-r1 < 1.5.0-r0 +1.5.0-r0 < 1.5.0-r1 +1.5.0-r1 < 1.6.0-r0 +1.6.0-r0 < 1.6.0-r1 +1.6.0-r1 < 1.7.0-r0 +1.7.0-r0 < 1.7.0-r1 +1.7.0-r1 < 1.7.0-r2 +1.7.0-r2 < 1.8.0-r0 +1.8.0-r0 < 1.8.0-r1 +1.8.0-r1 < 1.8.0-r2 +1.8.0-r2 < 1.8.0-r3 +1.8.0-r3 < 1.8.0-r4 +1.8.0-r4 < 1.8.1-r0 +1.8.1-r0 < 1.8.1-r4 +1.8.1-r4 < 1.8.2-r0 +1.8.2-r0 < 1.8.2-r1 +1.8.2-r1 < 1.8.2-r4 +1.8.2-r4 < 1.9.0-r0 +1.9.0-r0 < 1.9.0-r1 +1.9.0-r1 < 1.9.0-r2 +1.9.0-r2 < 1.10.0-r0 +1.10.0-r0 < 1.10.0-r1 +1.10.0-r1 < 1.10.0-r2 +1.10.0-r2 < 1.10.0-r3 +1.10.0-r3 < 1.10.0-r4 +1.10.0-r4 < 1.10.0-r5 +4.0.1-r0 < 4.0.1-r1 +4.0.1-r1 < 4.0.1-r2 +4.0.1-r2 < 4.0.1-r3 +4.0.1-r3 < 4.1.0-r0 +4.1.0-r2 < 4.1.1-r0 +4.1.1-r0 < 4.1.1-r1 +4.1.1-r1 < 4.1.1-r2 +4.1.1-r2 < 4.1.2-r3 +4.1.2-r3 < 4.1.2-r4 +4.1.2-r4 < 4.1.2-r5 +4.1.2-r5 < 4.1.2-r6 +4.1.2-r6 < 4.1.2-r7 +4.1.2-r7 < 4.1.2-r8 +4.1.2-r8 < 4.1.2-r9 +4.1.2-r9 < 4.1.2-r10 +4.1.2-r10 < 4.1.2-r11 +4.1.2-r11 < 4.1.2-r12 +4.1.2-r12 < 4.1.3-r0 +4.1.3-r0 < 4.2.0-r0 +4.2.0-r2 < 4.2.0-r3 +4.2.0-r3 < 4.2.0-r4 +4.2.0-r4 < 4.2.0-r5 +4.2.0-r5 < 4.2.0-r6 +4.2.0-r6 < 4.2.0-r7 +4.2.0-r7 < 4.2.1-r0 +4.2.1-r0 < 4.2.1-r1 +4.2.1-r1 < 4.2.1-r2 +4.2.1-r2 < 4.2.1-r3 +4.2.1-r3 < 4.2.1-r4 +4.2.1-r4 < 4.2.1-r5 +4.2.1-r5 < 4.2.1-r6 +4.2.1-r6 < 4.2.1-r7 +4.2.1-r7 < 4.2.1-r8 +4.2.1-r8 < 4.2.1-r9 +4.2.1-r9 < 4.2.1-r10 +4.2.1-r10 < 4.2.1-r11 +4.2.1-r11 < 4.2.2-r0 +4.2.2-r0 < 4.2.2-r2 +4.2.2-r2 < 4.2.2-r3 +4.2.2-r3 < 4.2.2-r4 +4.2.2-r4 < 4.2.2-r5 +4.2.2-r5 < 4.2.2-r6 +4.2.2-r6 < 4.2.2-r7 +4.2.2-r7 < 4.2.2-r8 +4.2.2-r8 < 4.2.2-r9 +4.2.2-r9 < 4.2.2-r10 +4.2.2-r10 < 4.2.2-r11 +4.2.2-r11 < 4.3.0-r0 +4.3.0-r2 < 4.3.0-r3 +4.3.0-r3 < 4.3.0-r4 +4.3.0-r4 < 4.3.0-r5 +4.3.0-r5 < 4.3.0-r6 +4.3.0-r6 < 4.3.0-r7 +4.3.0-r7 < 4.3.0-r8 +4.3.0-r8 < 4.3.1-r0 +4.3.1-r0 < 4.3.1-r1 +4.3.1-r1 < 4.3.1-r2 +4.3.1-r2 < 4.3.1-r3 +4.3.1-r3 < 4.3.2-r0 +4.3.2-r0 < 4.3.2-r1 +4.3.2-r1 < 4.3.2-r2 +4.3.2-r2 < 4.3.2-r3 +4.3.2-r3 < 4.3.2-r4 +4.3.2-r4 < 4.3.3-r0 +4.3.3-r0 < 4.4.1-r0 +4.4.1-r0 < 4.4.1-r1 +4.4.1-r1 < 4.4.1-r2 +4.4.1-r2 < 4.4.1-r3 +4.4.1-r3 < 4.4.1-r4 +4.4.1-r4 < 4.4.1-r5 +4.4.1-r5 < 4.4.1-r6 +4.4.1-r6 < 4.4.1-r7 +4.4.1-r7 < 4.4.1-r8 +4.4.1-r8 < 4.4.2-r0 +4.4.2-r0 < 4.4.2-r1 +4.4.2-r1 < 4.5.0-r0 +4.5.0-r1 < 4.5.1-r0 +4.5.1-r0 < 4.5.1-r1 +4.5.1-r1 < 4.5.1-r2 +4.5.1-r2 < 4.5.1-r3 +4.5.1-r3 < 4.6.0-r0 +4.6.0-r0 < 4.6.0-r1 +4.6.0-r1 < 4.6.0-r2 +4.6.0-r2 < 4.6.0-r3 +4.6.0-r3 < 4.6.0-r4 +4.6.0-r4 < 4.6.0-r5 +4.6.0-r5 < 4.6.1-r0 +4.6.1-r0 < 4.6.1-r1 +4.6.1-r1 < 4.6.1-r2 +4.6.1-r2 < 4.6.3-r0 +4.6.3-r0 < 4.6.3-r1 +4.6.3-r1 < 4.6.3-r2 +4.6.3-r2 < 4.6.3-r3 +4.6.3-r3 < 4.6.3-r4 +4.6.3-r4 < 4.6.3-r5 +4.6.3-r5 < 4.6.3-r6 +4.6.3-r6 < 4.6.3-r7 +4.6.3-r7 < 4.6.3-r8 +4.6.3-r8 < 4.6.3-r9 +4.6.3-r9 < 4.6.3-r10 +4.6.3-r10 < 4.6.3-r11 +4.6.3-r11 < 4.6.3-r12 +4.6.3-r12 < 4.7.0-r0 +4.7.0-r0 < 4.7.0-r1 +4.7.0-r1 < 4.7.0-r2 +4.7.0-r2 < 4.7.0-r3 +4.7.0-r3 < 4.7.0-r4 +4.7.0-r4 < 4.7.0-r5 +4.7.0-r5 < 4.7.1-r0 +4.7.1-r0 < 4.7.1-r1 +4.7.1-r1 < 4.7.1-r2 +4.7.1-r2 < 4.7.1-r3 +4.7.1-r3 < 4.7.1-r4 +4.7.1-r4 < 4.7.1-r5 +4.7.1-r5 < 4.7.2-r0 +4.7.2-r0 < 4.7.2-r1 +4.7.2-r1 < 4.7.2-r2 +4.7.2-r2 < 4.7.2-r3 +4.7.2-r3 < 4.7.2-r4 +4.7.2-r4 < 4.7.3-r0 +4.7.3-r0 < 4.7.3-r1 +4.7.3-r1 < 4.7.3-r2 +4.7.3-r2 < 4.7.3-r3 +4.7.3-r3 < 4.7.3-r4 +4.7.3-r4 < 4.7.3-r5 +4.7.3-r5 < 4.7.3-r6 +4.7.3-r6 < 4.7.3-r7 +4.7.3-r7 < 4.7.3-r8 +4.7.3-r8 < 4.7.3-r9 +4.7.3-r9 < 4.7.5-r0 +4.7.5-r0 < 4.8.1-r0 +4.8.1-r0 < 4.8.1-r1 +4.8.1-r1 < 4.8.1-r2 +4.8.1-r2 < 4.8.1-r3 +4.8.1-r3 < 4.8.1-r4 +4.8.1-r4 < 4.8.2-r0 +4.8.2-r0 < 4.8.2-r1 +4.8.2-r1 < 4.8.2-r2 +4.8.2-r2 < 4.8.2-r3 +4.8.2-r3 < 4.8.2-r4 +4.8.2-r4 < 4.8.2-r5 +4.8.2-r5 < 4.8.2-r6 +4.8.2-r6 < 4.8.3-r0 +4.8.3-r0 < 4.8.3-r1 +4.8.3-r1 < 4.8.4-r1 +4.8.4-r1 < 4.9.0-r0 +4.9.0-r0 < 4.9.0-r1 +4.9.0-r1 < 4.9.0-r2 +4.9.0-r2 < 4.9.0-r3 +4.9.0-r3 < 4.9.0-r4 +4.9.0-r4 < 4.9.0-r5 +4.9.0-r5 < 4.9.0-r6 +4.9.0-r6 < 4.9.0-r7 +4.9.0-r7 < 4.9.0-r8 +4.9.0-r8 < 4.9.1-r0 +4.9.1-r0 < 4.9.1-r1 +4.9.1-r1 < 4.9.1-r2 +4.9.1-r2 < 4.9.1-r3 +4.9.1-r3 < 4.9.1-r4 +4.9.1-r4 < 4.9.2-r0 +4.9.2-r0 < 4.9.2-r1 +4.9.2-r1 < 4.9.2-r2 +4.9.2-r2 < 4.9.2-r3 +4.9.2-r3 < 4.9.3-r0 +4.9.3-r0 < 4.9.3-r1 +4.9.3-r1 < 4.10.0-r0 +4.10.0-r0 < 4.10.0-r1 +4.10.0-r1 < 4.10.0-r2 +4.10.0-r2 < 4.10.0-r3 +4.10.0-r3 < 4.10.1-r0 +4.10.1-r0 < 4.10.1-r1 +4.10.1-r1 < 4.10.1-r2 +4.10.1-r2 < 4.10.1-r3 +4.10.1-r3 < 4.10.2-r0 +4.10.2-r0 < 4.10.2-r1 +4.10.2-r1 < 4.10.2-r2 +4.10.2-r2 < 4.10.3-r0 +4.10.3-r0 < 4.10.3-r1 +4.10.3-r1 < 4.10.4-r1 +4.10.4-r1 < 4.11.0-r0 +4.11.0-r0 < 4.11.0-r1 +4.11.0-r1 < 4.11.1-r0 +4.11.1-r0 < 4.11.1-r1 +4.11.1-r1 < 4.11.1-r2 +4.11.1-r2 < 4.11.2-r0 +4.11.2-r0 < 4.11.2-r1 +4.11.2-r1 < 4.11.3-r0 +4.11.3-r0 < 4.11.3-r1 +4.11.3-r1 < 4.11.3-r2 +4.11.3-r2 < 4.12.0-r0 +4.12.0-r0 < 4.12.0-r1 +4.12.0-r1 < 4.12.0-r2 +4.12.0-r2 < 4.12.0-r3 +4.12.0-r3 < 4.12.1-r0 +4.12.1-r0 < 4.12.1-r1 +4.12.1-r1 < 4.12.1-r2 +4.12.1-r2 < 4.12.2-r0 +4.12.2-r0 < 4.12.2-r1 +4.12.2-r1 < 4.12.3-r0 +4.12.3-r0 < 4.12.3-r1 +4.12.3-r1 < 4.12.3-r2 +4.12.3-r2 < 4.12.3-r3 +4.12.3-r3 < 4.12.3-r4 +4.12.3-r4 < 4.13.0-r0 +4.13.0-r0 < 4.13.0-r1 +4.13.0-r1 < 4.13.0-r2 +4.13.0-r2 < 4.13.0-r3 +4.13.0-r3 < 4.13.0-r4 +4.13.0-r4 < 4.13.1-r0 +4.13.1-r0 < 4.13.1-r1 +4.13.1-r1 < 4.13.1-r2 +4.13.1-r2 < 4.13.1-r3 +4.13.1-r3 < 4.13.1-r4 +4.13.1-r4 < 4.13.1-r5 +4.13.1-r5 < 4.13.2-r0 +4.13.2-r0 < 4.13.2-r1 +4.13.2-r1 < 4.13.2-r2 +4.13.2-r2 < 4.13.2-r3 +4.13.2-r3 < 4.13.2-r4 +4.13.2-r4 < 4.13.2-r5 +4.13.2-r5 < 4.13.3-r0 +4.13.3-r0 < 4.13.3-r1 +4.13.3-r1 < 4.13.3-r2 +4.13.3-r2 < 4.13.3-r3 +4.13.3-r3 < 4.14.0-r0 +4.14.0-r0 < 4.14.0-r1 +4.14.0-r1 < 4.14.0-r2 +4.14.0-r2 < 4.14.0-r3 +4.14.0-r3 < 4.14.1-r0 +4.14.1-r0 < 4.14.1-r1 +4.14.1-r1 < 4.14.1-r2 +4.14.1-r2 < 4.14.1-r3 +4.14.1-r3 < 4.14.1-r4 +4.14.1-r4 < 4.14.1-r5 +4.14.1-r5 < 4.14.2-r0 +4.14.2-r0 < 4.14.2-r1 +4.14.2-r1 < 4.14.3-r0 +4.14.3-r0 < 4.14.3-r1 +4.14.3-r1 < 4.14.3-r2 +4.14.3-r2 < 4.14.5-r2 +4.14.5-r2 < 4.15.0-r0 +4.15.0-r0 < 4.15.0-r1 +4.15.0-r1 < 4.15.0-r2 +4.15.0-r2 < 4.15.0-r3 +4.15.0-r3 < 4.15.0-r4 +4.15.0-r4 < 4.15.0-r5 +4.15.0-r5 < 4.15.1-r0 +4.15.1-r0 < 4.15.1-r1 +4.15.1-r1 < 4.15.1-r2 +4.15.1-r2 < 4.15.1-r3 +4.15.1-r3 < 4.15.2-r0 +4.15.2-r0 < 4.15.2-r1 +4.15.2-r1 < 4.15.2-r2 +4.15.2-r2 < 4.15.3-r0 +4.15.3-r0 < 4.15.3-r1 +4.15.3-r1 < 4.15.3-r2 +4.15.3-r2 < 4.15.3-r3 +4.15.3-r3 < 4.15.4-r0 +4.15.4-r0 < 4.15.4-r1 +4.15.4-r1 < 4.15.4-r2 +4.15.4-r2 < 4.15.4-r3 +4.15.4-r3 < 4.16.0-r0 +4.16.0-r0 < 4.16.0-r1 +4.16.0-r1 < 4.16.1-r0 +4.16.1-r0 < 4.16.1-r1 +4.16.1-r1 < 4.16.1-r2 +4.16.1-r2 < 4.16.1-r3 +4.16.1-r3 < 4.16.1-r4 +4.16.1-r4 < 4.16.1-r5 +4.16.1-r5 < 4.16.1-r6 +4.16.1-r6 < 4.16.1-r7 +4.16.1-r7 < 4.16.2-r0 +4.16.2-r0 < 4.16.2-r1 +4.16.2-r1 < 4.16.2-r2 +4.16.2-r2 < 4.16.2-r3 +4.16.2-r3 < 4.16.3-r0 +4.16.3-r0 < 4.16.4-r0 +4.16.4-r0 < 4.16.4-r1 +4.16.4-r1 < 4.16.4-r2 +4.16.4-r2 < 4.16.4-r3 +4.16.4-r3 < 4.16.5-r0 +4.16.5-r0 < 4.16.5-r1 +4.16.5-r1 < 4.16.5-r2 +4.16.5-r2 < 4.16.5-r3 +4.16.5-r3 < 4.16.5-r4 +4.16.5-r4 < 4.16.5-r5 +4.16.5-r5 < 4.16.5-r6 +4.16.5-r6 < 4.17.0-r0 +4.17.0-r0 < 4.17.0-r1 +4.17.0-r1 < 4.17.0-r2 +4.17.0-r2 < 4.17.0-r3 +4.17.0-r3 < 4.17.0-r4 +4.17.0-r4 < 4.17.0-r5 +4.17.0-r5 < 4.17.1-r0 +4.17.1-r0 < 4.17.1-r1 +4.17.1-r1 < 4.17.1-r2 +4.17.1-r2 < 4.17.1-r3 +4.17.1-r3 < 4.17.1-r4 +4.17.1-r4 < 4.17.1-r5 +4.17.1-r5 < 4.17.2-r0 +4.17.2-r0 < 4.17.2-r1 +4.17.2-r1 < 4.17.2-r2 +4.17.2-r2 < 4.17.2-r3 +4.17.2-r3 < 4.17.2-r4 +4.17.2-r4 < 4.17.2-r5 +4.17.2-r5 < 4.17.3-r0 +4.17.3-r0 < 4.18.0-r0 +4.18.0-r0 < 4.18.0-r1 +4.18.0-r1 < 4.18.0-r2 +4.18.0-r2 < 4.18.0-r3 +0.23.2-r0 < 0.23.2-r1 +0.23.2-r1 < 0.23.4-r0 +0.23.4-r0 < 0.23.4-r1 +0.23.4-r1 < 0.24.0-r0 +0.24.1-r0 < 0.24.1-r1 +0.24.1-r1 < 0.24.2-r0 +0.24.2-r0 < 0.24.2-r1 +0.24.2-r1 < 0.24.3-r0 +0.24.3-r0 < 0.24.3-r1 +0.24.3-r1 < 0.25.1-r0 +0.25.1-r0 < 0.25.1-r1 +0.25.1-r1 < 0.25.1-r2 +0.25.1-r2 < 0.25.1-r4 +0.25.1-r4 < 0.26.0-r0 +0.26.0-r1 < 0.26.3-r0 +0.26.3-r0 < 0.26.3-r1 +0.26.3-r1 < 0.27.0-r0 +0.27.0-r0 < 0.27.0-r1 +0.27.0-r1 < 0.27.2-r0 +0.27.2-r0 < 0.27.2-r1 +0.27.2-r1 < 0.27.3-r0 +0.27.3-r0 < 0.27.4-r0 +0.27.4-r0 < 0.27.4-r1 +0.27.4-r1 < 0.27.7-r0 +0.27.7-r0 < 0.28.1-r0 +0.28.1-r0 < 0.28.2-r0 +0.28.2-r0 < 0.28.2-r1 +0.28.2-r1 < 0.28.3-r0 +0.28.3-r0 < 0.28.3-r1 +1.8.2-r1 < 1.8.2-r2 +1.8.2-r2 < 1.8.2-r3 +1.8.2-r3 < 1.8.3-r0 +1.8.3-r0 < 1.8.3-r1 +1.8.3-r1 < 1.8.3-r2 +1.8.3-r2 < 1.8.3-r3 +1.8.3-r3 < 1.8.4-r0 +1.8.4-r0 < 1.8.4-r1 +1.8.4-r1 < 1.8.4-r2 +1.8.4-r2 < 1.8.4-r3 +1.8.4-r3 < 1.8.5-r0 +1.8.5-r0 < 1.8.5-r1 +1.8.5-r1 < 1.8.6-r0 +1.8.6-r0 < 1.8.8-r0 +1.8.8-r0 < 1.8.8-r1 +1.8.8-r1 < 1.8.9-r0 +1.8.9-r0 < 1.8.11-r0 +1.8.11-r0 < 1.8.11-r1 +1.8.11-r1 < 1.8.12-r0 +1.8.12-r0 < 1.8.12-r1 +1.8.12-r1 < 2.0.0-r0 +2.0.0-r0 < 2.0.0-r1 +2.0.0-r1 < 2.0.2-r0 +2.0.2-r0 < 2.0.2-r1 +2.0.2-r1 < 2.0.4-r0 +2.0.4-r0 < 2.0.4-r1 +2.0.4-r1 < 2.0.4-r2 +2.0.4-r2 < 2.0.5-r0 +2.0.5-r0 < 2.0.6-r0 +2.0.6-r0 < 2.0.7-r0 +2.0.7-r0 < 2.0.8-r0 +2.0.8-r0 < 2.0.8-r1 +2.0.8-r1 < 2.0.8-r2 +2.0.8-r2 < 2.0.8-r3 +2.0.8-r3 < 2.0.8-r4 +2.0.8-r4 < 2.2.0-r0 +2.2.0-r0 < 2.2.1-r0 +2.2.1-r0 < 2.2.1-r1 +2.2.1-r1 < 2.2.1-r2 +2.2.5-r2 < 2.2.6-r0 +2.2.6-r0 < 2.2.6-r1 +2.2.6-r1 < 2.4.0-r0 +2.4.0-r0 < 2.4.1-r0 +2.4.1-r0 < 2.4.2-r0 +2.4.2-r1 < 2.4.2-r2 +2.4.2-r2 < 2.4.3-r0 +2.4.4-r0 < 2.4.5-r0 +2.4.5-r1 < 2.4.5-r2 +2.4.5-r2 < 2.4.5-r3 +2.4.5-r3 < 2.4.6-r0 +2.4.7-r1 < 3.0.0-r0 +3.0.2-r0 < 3.0.2-r1 +3.0.2-r1 < 3.0.2-r2 +3.0.2-r2 < 3.0.3-r2 +3.5.8-r0 < 3.5.8-r1 +3.5.8-r1 < 3.5.8-r2 +3.5.8-r2 < 3.5.8-r3 +3.5.8-r3 < 3.5.8-r4 +3.5.8-r4 < 3.5.9-r0 +3.5.9-r0 < 3.5.9-r1 +3.5.9-r1 < 3.5.9-r2 +3.5.9-r2 < 3.5.9-r3 +3.5.9-r3 < 3.5.10-r0 +3.5.11-r0 < 3.5.11-r1 +3.5.11-r1 < 3.5.12-r0 +3.5.12-r0 < 3.5.12-r1 +3.5.12-r1 < 3.5.13-r0 +3.5.13-r0 < 3.5.13-r1 +3.5.13-r1 < 3.5.14-r0 +3.5.15-r1 < 3.5.15-r2 +3.5.15-r2 < 3.5.16-r0 +3.5.16-r0 < 3.5.16-r1 +5.2.8-r0 < 5.2.8-r1 +5.2.8-r1 < 5.2.9-r0 +5.2.9-r0 < 5.2.10-r0 +5.2.10-r0 < 5.2.10-r2 +5.2.10-r2 < 5.2.10-r3 +5.2.10-r3 < 5.2.10-r4 +5.2.10-r4 < 5.2.11-r0 +5.2.11-r0 < 5.3.0-r0 +5.3.0-r0 < 5.3.0-r1 +5.3.0-r1 < 5.3.0-r2 +5.3.0-r2 < 5.3.0-r3 +5.3.0-r3 < 5.3.1-r0 +5.3.1-r0 < 5.3.1-r1 +5.3.1-r1 < 5.3.1-r2 +5.3.1-r2 < 5.3.1-r3 +5.3.1-r3 < 5.3.1-r4 +5.3.1-r4 < 5.3.1-r5 +5.3.1-r5 < 5.3.2-r0 +5.3.2-r0 < 5.3.2-r1 +5.3.2-r1 < 5.3.2-r2 +5.3.2-r2 < 5.3.2-r3 +5.3.2-r3 < 5.3.2-r4 +5.3.2-r4 < 5.3.2-r5 +5.3.2-r5 < 5.3.2-r6 +5.3.2-r6 < 5.3.2-r7 +5.3.2-r7 < 5.3.2-r8 +5.3.2-r8 < 5.3.3-r0 +5.3.3-r0 < 5.3.3-r1 +5.3.3-r1 < 5.3.3-r2 +5.3.3-r2 < 5.3.3-r3 +5.3.3-r3 < 5.3.3-r4 +5.3.3-r4 < 5.3.3-r5 +5.3.3-r5 < 5.3.4-r0 +5.3.4-r0 < 5.3.4-r1 +5.3.4-r1 < 5.3.4-r2 +5.3.4-r2 < 5.3.5-r0 +5.3.5-r0 < 5.3.5-r1 +5.3.5-r1 < 5.3.5-r2 +5.3.5-r2 < 5.3.5-r3 +5.3.5-r3 < 5.3.5-r4 +5.3.5-r4 < 5.3.5-r5 +5.3.5-r5 < 5.3.5-r6 +5.3.5-r6 < 5.3.5-r7 +5.3.5-r7 < 5.3.6-r0 +5.3.6-r0 < 5.3.6-r1 +5.3.6-r1 < 5.3.6-r2 +5.3.6-r2 < 5.3.6-r3 +5.3.6-r3 < 5.3.6-r4 +5.3.6-r4 < 5.3.6-r5 +5.3.6-r5 < 5.3.6-r6 +5.3.6-r6 < 5.3.6-r7 +5.3.6-r7 < 5.3.6-r8 +5.3.6-r8 < 5.3.6-r9 +5.3.6-r9 < 5.3.6-r10 +5.3.6-r10 < 5.3.6-r11 +5.3.6-r11 < 5.3.7-r0 +5.3.7-r0 < 5.3.7-r1 +5.3.7-r1 < 5.3.8-r0 +5.3.8-r0 < 5.3.8-r1 +5.3.8-r1 < 5.3.8-r2 +5.3.8-r2 < 5.3.9-r0 +5.3.9-r0 < 5.3.9-r1 +5.3.9-r1 < 5.3.10-r0 +5.3.10-r0 < 5.3.10-r1 +5.3.10-r1 < 5.3.10-r2 +5.3.10-r2 < 5.3.10-r3 +5.3.10-r3 < 5.3.10-r4 +5.3.10-r4 < 5.3.10-r5 +5.3.10-r5 < 5.3.12-r0 +5.3.12-r0 < 5.3.12-r1 +5.3.12-r1 < 5.3.12-r2 +5.3.12-r2 < 5.3.12-r3 +5.3.12-r3 < 5.3.15-r3 +5.3.15-r3 < 5.3.16-r0 +5.3.16-r0 < 5.3.17-r0 +5.3.17-r0 < 5.3.18-r0 +5.3.18-r0 < 5.3.19-r0 +5.3.19-r0 < 5.3.20-r0 +5.3.20-r0 < 5.3.20-r1 +5.3.20-r1 < 5.3.21-r1 +5.3.21-r1 < 5.3.21-r2 +5.3.21-r2 < 5.3.23-r0 +5.3.23-r0 < 5.3.23-r1 +5.3.23-r1 < 5.4.14-r0 +5.4.14-r0 < 5.4.14-r1 +5.4.14-r1 < 5.4.14-r2 +5.4.14-r2 < 5.4.14-r3 +5.4.14-r3 < 5.4.15-r0 +5.4.15-r0 < 5.4.15-r1 +5.4.15-r1 < 5.4.16-r0 +5.4.16-r0 < 5.4.17-r0 +5.4.17-r0 < 5.4.17-r1 +5.4.17-r1 < 5.4.19-r0 +5.4.19-r0 < 5.4.20-r0 +5.4.20-r0 < 5.5.4-r0 +5.5.4-r0 < 5.5.4-r1 +5.5.4-r1 < 5.5.5-r0 +5.5.5-r0 < 5.5.5-r1 +5.5.5-r1 < 5.5.5-r2 +5.5.5-r2 < 5.5.6-r0 +5.5.6-r0 < 5.5.6-r1 +5.5.6-r1 < 5.5.7-r0 +5.5.7-r0 < 5.5.8-r0 +5.5.8-r0 < 5.5.8-r1 +5.5.8-r1 < 5.5.9-r0 +5.5.9-r0 < 5.5.10-r0 +5.5.10-r0 < 5.5.11-r0 +5.5.11-r0 < 5.5.11-r1 +5.5.11-r1 < 5.5.12-r0 +5.5.12-r0 < 5.5.13-r0 +5.5.13-r0 < 5.5.13-r1 +5.5.13-r1 < 5.5.13-r2 +5.5.13-r2 < 5.5.13-r3 +5.5.13-r3 < 5.5.13-r4 +5.5.13-r4 < 5.5.14-r0 +5.5.14-r0 < 5.5.15-r0 +5.5.15-r0 < 5.5.15-r1 +5.5.15-r1 < 5.5.16-r0 +5.5.16-r0 < 5.6.1-r0 +5.6.1-r2 < 5.6.2-r0 +5.6.2-r0 < 5.6.2-r1 +5.6.2-r1 < 5.6.3-r0 +5.6.3-r0 < 5.6.4-r0 +5.6.4-r0 < 5.6.5-r0 +5.6.5-r0 < 5.6.5-r1 +5.6.5-r1 < 5.6.6-r0 +5.6.6-r0 < 5.6.7-r0 +5.6.7-r0 < 5.6.7-r1 +5.6.7-r1 < 5.6.8-r0 +5.6.8-r0 < 5.6.8-r1 +5.6.8-r1 < 5.6.9-r0 +5.6.9-r0 < 5.6.9-r1 +5.6.9-r1 < 5.6.10-r0 +5.6.10-r0 < 5.6.11-r0 +5.6.11-r0 < 5.6.12-r0 +5.6.12-r0 < 5.6.13-r0 +5.6.13-r0 < 5.6.14-r0 +5.6.14-r0 < 5.6.15-r0 +5.6.15-r0 < 5.6.15-r1 +5.6.15-r1 < 5.6.15-r2 +5.6.15-r2 < 5.6.15-r3 +5.6.15-r3 < 5.6.16-r0 +5.6.16-r0 < 5.6.17-r0 +5.6.17-r0 < 5.6.18-r0 +5.6.18-r0 < 5.6.18-r1 +5.6.18-r1 < 5.6.19-r0 +5.6.19-r0 < 5.6.19-r1 +5.6.19-r1 < 5.6.20-r0 +5.6.20-r0 < 5.6.21-r0 +5.6.21-r0 < 5.6.21-r1 +5.6.21-r1 < 5.6.21-r2 +5.6.21-r2 < 5.6.22-r0 +5.6.22-r0 < 5.6.23-r0 +5.6.23-r0 < 5.6.23-r2 +5.6.23-r2 < 5.6.24-r0 +5.6.24-r0 < 5.6.24-r2 +5.6.24-r2 < 5.6.25-r0 +5.6.25-r0 < 5.6.25-r1 +5.6.25-r1 < 5.6.25-r2 +5.6.25-r2 < 5.6.26-r0 +5.6.26-r0 < 5.6.26-r1 +5.6.26-r1 < 5.6.26-r2 +5.6.26-r2 < 5.6.27-r0 +5.6.27-r0 < 5.6.27-r2 +5.6.27-r2 < 5.6.28-r0 +5.6.28-r0 < 5.6.28-r2 +5.6.28-r2 < 5.6.29-r0 +5.6.29-r0 < 5.6.29-r1 +5.6.29-r1 < 5.6.29-r2 +5.6.29-r2 < 5.6.30-r1 +5.6.30-r1 < 5.6.30-r2 +5.6.30-r2 < 5.6.31-r1 +5.6.31-r1 < 5.6.31-r2 +5.6.31-r2 < 5.6.32-r1 +5.6.32-r1 < 5.6.33-r1 +5.6.33-r1 < 5.6.33-r2 +5.6.33-r2 < 5.6.34-r1 +5.6.34-r1 < 5.6.34-r2 +5.6.34-r2 < 5.6.35-r1 +5.6.35-r1 < 5.6.35-r2 +5.6.35-r2 < 5.6.36-r1 +5.6.36-r1 < 5.6.37-r1 +5.6.37-r1 < 5.6.38-r1 +4.60.1-r0 < 4.60.1-r1 +4.60.1-r1 < 4.60.1-r2 +4.60.1-r2 < 4.60.1-r3 +4.60.1-r3 < 4.60.1-r4 +4.60.1-r4 < 4.70.0-r0 +4.70.0-r0 < 4.70.0-r1 +4.70.0-r1 < 4.70.0-r2 +4.70.0-r2 < 4.70.0-r3 +4.70.0-r3 < 4.75.0-r3 +4.75.0-r3 < 4.75.2-r3 +4.75.2-r3 < 4.80.0-r3 +4.80.0-r3 < 5.1.0-r3 +2.5-r0 < 2.6-r0 +2.6-r0 < 2.7-r0 +2.7-r0 < 2.7-r1 +2.7-r1 < 2.8-r0 +2.8-r0 < 2.8-r1 +2.8-r1 < 2.8-r2 +2.8-r2 < 2.9-r0 +0.10.6-r0 < 0.10.6-r1 +0.10.6-r1 < 0.10.6-r2 +0.10.6-r2 < 0.11.0-r0 +0.11.0-r0 < 0.11.1-r0 +0.11.1-r0 < 0.11.1-r1 +0.11.1-r1 < 0.12.3-r0 +0.12.3-r0 < 0.12.4-r0 +0.12.4-r0 < 0.12.5-r0 +0.12.5-r0 < 0.13.0-r0 +0.13.0-r0 < 0.13.0-r1 +0.13.0-r1 < 0.14.0-r0 +0.14.0-r0 < 0.14.0-r1 +0.14.0-r1 < 0.14.1-r0 +0.14.1-r0 < 0.15.0-r0 +0.15.0-r0 < 0.15.0-r1 +0.15.0-r1 < 0.15.1-r0 +0.15.1-r0 < 1.0-r0 +1.0-r0 < 1.0-r1 +1.0-r1 < 1.0-r2 +1.0-r2 < 1.0-r3 +1.0-r3 < 1.0-r4 +1.0-r4 < 1.0.1-r0 +1.0.1-r0 < 1.0.1-r1 +1.0.1-r1 < 1.0.1-r2 +1.0.1-r2 < 1.1.0-r0 +1.1.0-r0 < 1.1.0-r1 +1.1.0-r1 < 1.1.0-r2 +1.1.0-r2 < 1.1.1-r0 +1.1.1-r0 < 1.2.0-r0 +1.2.0-r0 < 1.2.0-r1 +1.2.0-r1 < 1.2.0-r2 +1.2.0-r2 < 1.2.1-r0 +1.2.1-r0 < 1.2.1-r1 +1.2.1-r1 < 1.2.2-r0 +1.2.2-r0 < 1.3.0-r0 +1.3.0-r0 < 1.3.1-r0 +1.3.1-r0 < 1.4.0-r0 +1.4.0-r0 < 1.4.0-r1 +1.4.0-r1 < 1.4.1-r0 +1.4.1-r0 < 1.5.0-r0 +1.5.0-r1 < 1.5.1-r0 +1.5.1-r0 < 1.5.1-r1 +1.5.1-r1 < 1.5.1-r2 +1.5.1-r2 < 1.5.1-r3 +1.5.1-r3 < 1.5.2-r0 +1.5.2-r0 < 1.6.0-r0 +1.6.0-r1 < 1.6.1-r0 +1.6.1-r0 < 1.7.0-r0 +1.7.0-r1 < 1.7.1-r0 +1.7.1-r0 < 2.0.0-r0 +2.0.0-r1 < 2.1.0-r0 +2.1.0-r1 < 2.1.1-r0 +2.1.1-r0 < 2.1.2-r0 +2.1.2-r0 < 2.1.2-r1 +2.1.2-r1 < 2.1.2-r2 +2.1.2-r2 < 2.1.3-r0 +2.1.3-r0 < 2.2.1-r0 +2.2.1-r2 < 2.3.0-r0 +2.3.0-r1 < 2.3.0-r2 +2.3.0-r2 < 2.4.0-r0 +2.4.0-r0 < 2.4.0.1-r0 +2.4.0.1-r0 < 2.4.0.1-r1 +2.4.0.1-r1 < 2.4.1-r0 +2.4.1-r1 < 2.4.1-r2 +2.4.1-r2 < 2.4.1-r3 +2.4.1-r3 < 2.5.0-r0 +2.5.0-r1 < 2.5.1-r0 +2.5.1-r0 < 2.5.1-r1 +2.5.1-r1 < 2.5.1-r2 +2.5.1-r2 < 2.5.1-r3 +2.5.1-r3 < 2.6.0-r0 +2.6.0-r0 < 2.6.0-r1 +2.6.0-r2 < 2.6.0-r3 +2.6.0-r3 < 2.6.0-r4 +2.6.0-r4 < 2.6.0-r5 +2.6.0-r5 < 2.6.0-r6 +2.6.0-r6 < 2.6.1-r0 +2.6.1-r0 < 2.6.2-r0 +2.6.2-r0 < 2.7.0-r0 +2.7.0-r0 < 2.8.0-r0 +2.8.0-r0 < 2.8.0-r1 +2.8.0-r1 < 2.8.0-r2 +2.8.0-r2 < 2.8.0-r3 +2.8.0-r3 < 2.8.0-r4 +2.8.0-r4 < 2.8.1-r0 +0.5-r0 < 0.6-r0 +0.6-r0 < 0.6-r1 +0.6-r1 < 0.6-r2 +0.6-r2 < 0.6.1-r0 +0.6.1-r0 < 0.6.1-r1 +0.6.1-r1 < 0.6.2-r0 +0.6.2-r0 < 0.6.2-r1 +0.6.2-r1 < 0.6.2-r2 +0.6.2-r2 < 0.6.3-r0 +0.6.3-r0 < 0.6.3-r1 +0.6.3-r1 < 0.6.3-r2 +0.6.3-r2 < 0.8-r0 +0.8-r0 < 0.8.1-r0 +0.8.1-r0 < 0.8.2-r0 +0.8.2-r0 < 0.8.3-r0 +0.8.3-r0 < 0.8.4-r0 +0.8.4-r0 < 0.8.5-r0 +0.8.5-r0 < 0.8.5-r1 +0.8.5-r1 < 0.8.6-r0 +0.8.6-r0 < 0.8.7-r0 +0.8.7-r0 < 0.9-r0 +0.9-r0 < 0.9.1-r0 +0.9.1-r0 < 0.10-r0 +0.10-r0 < 0.10-r1 +0.10-r1 < 0.10-r2 +0.10-r2 < 0.10.2-r0 +0.10.2-r0 < 0.11-r0 +0.11-r0 < 0.11.1-r0 +0.11.1-r1 < 0.11.2-r1 +0.11.2-r1 < 1.0-r0 +1.0-r2 < 1.0.1-r0 +1.0.1-r1 < 1.1-r1 +1.1-r1 < 1.1.2-r1 +1.1.2-r1 < 1.1.2-r2 +1.1.2-r2 < 1.1.2-r3 +1.1.2-r3 < 1.1.3-r0 +1.1.3-r0 < 1.1.4-r0 +1.1.4-r0 < 1.2-r0 +1.2-r0 < 1.2-r1 +1.2-r1 < 1.2.1-r0 +1.2.1-r0 < 1.2.2-r0 +1.2.2-r0 < 1.2.4-r0 +1.2.4-r0 < 2.0.2-r0 +2.0.2-r0 < 2.1-r0 +2.1-r0 < 2.1.1-r0 +2.1.1-r0 < 2.1.3-r0 +2.1.3-r0 < 2.1.4-r0 +2.1.4-r0 < 2.2-r0 +2.2-r0 < 2.2.2-r0 +2.2.3-r0 < 2.2.4-r0 +2.2.4-r2 < 2.2.4-r3 +2.2.4-r3 < 2.3-r0 +2.3-r0 < 2.3.1-r0 +2.3.1-r0 < 2.3.2-r0 +2.3.2-r0 < 2.3.3-r0 +2.3.3-r0 < 2.3.4-r0 +2.3.4-r0 < 2.3.4-r1 +2.3.4-r1 < 2.3.4-r2 +2.3.4-r2 < 2.3.5-r0 +2.3.5-r0 < 2.5.1-r0 +2.5.1-r0 < 2.5.2-r0 +2.5.2-r0 < 2.5.2-r1 +2.5.2-r1 < 2.5.3-r0 +2.5.3-r0 < 2.5.4-r0 +2.5.4-r0 < 2.6.1-r0 +2.6.2-r1 < 2.6.2-r2 +2.6.2-r2 < 2.6.3-r0 +2.6.3-r0 < 2.7-r0 +2.7-r0 < 2.7.1-r0 +2.7.1-r0 < 2.7.1-r1 +2.7.1-r1 < 2.7.2-r0 +2.7.2-r0 < 2.8-r0 +2.8-r2 < 2.8.1-r0 +2.8.1-r0 < 2.8.2-r0 +2.8.2-r0 < 2.8.2-r1 +2.8.2-r1 < 2.8.3-r0 +2.8.3-r0 < 2.8.3-r1 +2.8.3-r1 < 2.8.5-r0 +2.8.5-r0 < 2.8.5-r1 +2.8.5-r1 < 3.0.1-r0 +3.0.2-r1 < 3.0.7-r0 +3.0.7-r0 < 3.1-r0 +3.1-r0 < 3.1.1-r0 +3.1.1-r0 < 3.1.2-r0 +3.1.2-r0 < 3.1.3-r0 +3.1.3-r0 < 3.1.4-r0 +3.1.4-r0 < 3.1.6-r0 +3.1.6-r0 < 3.1.7-r0 +3.1.7-r0 < 3.1.11-r0 +3.1.11-r0 < 3.2.2-r0 +3.2.2-r1 < 3.2.4-r0 +3.2.4-r1 < 3.2.4-r2 +3.2.4-r2 < 3.2.5-r2 +3.2.5-r2 < 3.2.6-r1 +3.2.6-r1 < 3.3.2-r2 +3.3.2-r2 < 3.3.3-r2 +1.4.13-r0 < 1.4.13-r1 +1.4.13-r1 < 1.4.14b-r0 +1.4.14b-r0 < 1.4.14b-r1 +1.4.14b-r1 < 2.0.10-r0 +2.0.10-r0 < 2.0.11-r0 +2.0.11-r0 < 2.0.12-r0 +2.0.12-r0 < 2.0.12-r1 +2.0.12-r1 < 2.0.13-r0 +2.0.13-r0 < 2.0.15-r0 +2.0.15-r0 < 2.0.16-r0 +2.0.16-r0 < 2.0.17-r0 +2.0.17-r0 < 2.0.18-r0 +2.0.18-r0 < 2.0.19-r0 +2.0.19-r0 < 2.0.20-r0 +2.0.20-r0 < 2.0.21-r0 +2.0.21-r0 < 2.0.21-r1 +2.0.21-r1 < 2.0.21-r2 +2.0.21-r2 < 2.0.22-r0 +2.0.22-r0 < 2.0.22-r1 +2.6.26.8-r1 < 2.6.26.8-r2 +2.6.26.8-r2 < 2.6.28.5-r0 +2.6.28.5-r0 < 2.6.28.7-r0 +2.6.28.7-r0 < 2.6.28.7-r1 +2.6.28.7-r1 < 2.6.28.9-r0 +2.6.28.9-r0 < 2.6.28.9-r1 +2.6.28.9-r1 < 2.6.28.9-r2 +2.6.28.9-r2 < 2.6.28.9-r3 +2.6.28.9-r3 < 2.6.28.9-r4 +2.6.28.9-r4 < 2.6.29.5-r0 +2.6.29.5-r0 < 2.6.29.5-r1 +2.6.29.5-r1 < 2.6.29.5-r2 +2.6.29.5-r2 < 2.6.29.5-r3 +2.6.29.5-r3 < 2.6.29.5-r4 +2.6.29.5-r4 < 2.6.29.6-r0 +2.6.29.6-r0 < 2.6.29.6-r1 +2.6.29.6-r1 < 2.6.29.6-r2 +2.6.29.6-r2 < 2.6.30.4-r1 +2.6.30.4-r1 < 2.6.30.4-r2 +2.6.30.4-r2 < 2.6.30.4-r3 +2.6.30.4-r3 < 2.6.30.4-r4 +2.6.30.4-r4 < 2.6.30.4-r5 +2.6.30.4-r5 < 2.6.30.5-r0 +2.6.30.5-r0 < 2.6.30.5-r1 +2.6.30.5-r1 < 2.6.30.5-r2 +2.6.30.5-r2 < 2.6.30.5-r3 +2.6.30.5-r3 < 2.6.30.6-r0 +2.6.30.6-r0 < 2.6.30.6-r1 +2.6.30.6-r1 < 2.6.30.7-r0 +2.6.30.7-r0 < 2.6.30.7-r1 +2.6.30.7-r1 < 2.6.30.7-r2 +2.6.30.7-r2 < 2.6.30.8-r0 +2.6.30.8-r0 < 2.6.31.4-r0 +2.6.31.4-r0 < 2.6.31.5-r0 +2.6.31.5-r0 < 2.6.31.5-r1 +2.6.31.5-r1 < 2.6.31.6-r1 +2.6.31.6-r1 < 2.6.31.6-r2 +2.6.31.6-r2 < 2.6.31.7-r0 +2.6.31.7-r0 < 2.6.31.7-r1 +2.6.31.7-r1 < 2.6.32-r0 +2.6.32-r0 < 2.6.32.1-r0 +2.6.32.1-r0 < 2.6.32.2-r0 +2.6.32.2-r0 < 2.6.32.2-r1 +2.6.32.2-r1 < 2.6.32.2-r2 +2.6.32.2-r2 < 2.6.32.3-r0 +2.6.32.3-r0 < 2.6.32.6-r0 +2.6.32.6-r0 < 2.6.32.6-r1 +2.6.32.6-r1 < 2.6.32.7-r0 +2.6.32.7-r0 < 2.6.32.8-r0 +2.6.32.8-r0 < 2.6.32.8-r1 +2.6.32.8-r1 < 2.6.32.9-r0 +2.6.32.9-r0 < 2.6.32.9-r1 +2.6.32.9-r1 < 2.6.32.9-r2 +2.6.32.9-r2 < 2.6.32.9-r3 +2.6.32.9-r3 < 2.6.32.10-r0 +2.6.32.10-r0 < 2.6.32.10-r1 +2.6.32.10-r1 < 2.6.32.11-r0 +2.6.32.11-r0 < 2.6.32.11-r1 +2.6.32.11-r1 < 2.6.32.11-r2 +2.6.32.11-r2 < 2.6.32.12-r2 +2.6.32.12-r2 < 2.6.32.12-r3 +2.6.32.12-r3 < 2.6.32.12-r4 +2.6.32.12-r4 < 2.6.32.12-r5 +2.6.32.12-r5 < 2.6.32.13-r0 +2.6.32.13-r0 < 2.6.32.14-r0 +2.6.32.14-r0 < 2.6.32.14-r1 +2.6.32.14-r1 < 2.6.32.15-r0 +2.6.32.15-r0 < 2.6.32.15-r1 +2.6.32.15-r1 < 2.6.32.15-r2 +2.6.32.15-r2 < 2.6.32.15-r3 +2.6.32.15-r3 < 2.6.32.15-r4 +2.6.32.15-r4 < 2.6.32.15-r5 +2.6.32.15-r5 < 2.6.32.15-r6 +2.6.32.15-r6 < 2.6.32.15-r7 +2.6.32.15-r7 < 2.6.32.15-r8 +2.6.32.15-r8 < 2.6.32.15-r9 +2.6.32.15-r9 < 2.6.32.16-r0 +2.6.32.16-r0 < 2.6.32.16-r1 +2.6.32.16-r1 < 2.6.32.16-r2 +2.6.32.16-r2 < 2.6.32.16-r3 +2.6.32.16-r3 < 2.6.32.16-r4 +2.6.32.16-r4 < 2.6.32.18-r0 +2.6.32.18-r0 < 2.6.32.19-r0 +2.6.32.19-r0 < 2.6.32.19-r1 +2.6.32.19-r1 < 2.6.32.21-r1 +2.6.32.21-r1 < 2.6.32.21-r2 +2.6.32.21-r2 < 2.6.32.21-r3 +2.6.32.21-r3 < 2.6.32.21-r4 +2.6.32.21-r4 < 2.6.32.21-r5 +2.6.32.21-r5 < 2.6.32.21-r6 +2.6.32.21-r6 < 2.6.32.22-r0 +2.6.32.22-r0 < 2.6.32.22-r1 +2.6.32.22-r1 < 2.6.32.23-r0 +2.6.32.23-r0 < 2.6.32.23-r1 +2.6.32.23-r1 < 2.6.32.24-r0 +2.6.32.24-r0 < 2.6.32.24-r1 +2.6.32.24-r1 < 2.6.32.24-r2 +2.6.32.24-r2 < 2.6.35.7-r0 +2.6.35.7-r0 < 2.6.35.7-r1 +2.6.35.7-r1 < 2.6.35.7-r2 +2.6.35.7-r2 < 2.6.35.7-r3 +2.6.35.7-r3 < 2.6.35.8-r0 +2.6.35.8-r0 < 2.6.35.8-r1 +2.6.35.8-r1 < 2.6.35.8-r2 +2.6.35.8-r2 < 2.6.35.8-r3 +2.6.35.8-r3 < 2.6.35.8-r4 +2.6.35.8-r4 < 2.6.35.8-r5 +2.6.35.8-r5 < 2.6.35.9-r0 +2.6.35.9-r0 < 2.6.35.9-r1 +2.6.35.9-r1 < 2.6.35.9-r2 +2.6.35.9-r2 < 2.6.35.9-r3 +2.6.35.9-r3 < 2.6.35.9-r4 +2.6.35.9-r4 < 2.6.35.9-r5 +2.6.35.9-r5 < 2.6.35.9-r6 +2.6.35.9-r6 < 2.6.35.10-r0 +2.6.35.10-r0 < 2.6.35.10-r1 +2.6.35.10-r1 < 2.6.35.10-r2 +2.6.35.10-r2 < 2.6.35.10-r3 +2.6.35.10-r3 < 2.6.37-r0 +2.6.37-r0 < 2.6.37-r1 +2.6.37-r1 < 2.6.37-r2 +2.6.37-r2 < 2.6.37-r3 +2.6.37-r3 < 2.6.37.1-r0 +2.6.37.1-r0 < 2.6.37.1-r1 +2.6.37.1-r1 < 2.6.37.2-r0 +2.6.37.2-r0 < 2.6.37.2-r1 +2.6.37.2-r1 < 2.6.37.2-r2 +2.6.37.2-r2 < 2.6.37.2-r3 +2.6.37.2-r3 < 2.6.37.2-r4 +2.6.37.2-r4 < 2.6.37.3-r0 +2.6.37.3-r0 < 2.6.37.3-r1 +2.6.37.3-r1 < 2.6.37.4-r0 +2.6.37.4-r0 < 2.6.37.4-r1 +2.6.37.4-r1 < 2.6.38.1-r1 +2.6.38.1-r1 < 2.6.38.1-r2 +2.6.38.1-r2 < 2.6.38.2-r0 +2.6.38.2-r0 < 2.6.38.2-r1 +2.6.38.2-r1 < 2.6.38.2-r2 +2.6.38.2-r2 < 2.6.38.2-r3 +2.6.38.2-r3 < 2.6.38.3-r0 +2.6.38.3-r0 < 2.6.38.3-r1 +2.6.38.3-r1 < 2.6.38.3-r2 +2.6.38.3-r2 < 2.6.38.7-r0 +2.6.38.7-r0 < 2.6.38.8-r0 +2.6.38.8-r0 < 2.6.38.8-r1 +2.6.38.8-r1 < 3.0.3-r0 +3.0.3-r0 < 3.0.3-r1 +3.0.3-r1 < 3.0.3-r2 +3.0.3-r2 < 3.0.4-r2 +3.0.4-r2 < 3.0.4-r3 +3.0.4-r3 < 3.0.4-r4 +3.0.4-r4 < 3.0.4-r5 +3.0.4-r5 < 3.0.4-r6 +3.0.4-r6 < 3.0.4-r7 +3.0.4-r7 < 3.0.4-r8 +3.0.4-r8 < 3.0.7-r0 +3.0.7-r1 < 3.0.7-r2 +3.0.7-r2 < 3.0.8-r0 +3.0.8-r0 < 3.0.8-r1 +3.0.8-r1 < 3.0.8-r2 +3.0.8-r2 < 3.0.8-r3 +3.0.8-r3 < 3.0.8-r4 +3.0.8-r4 < 3.0.9-r0 +3.0.9-r0 < 3.0.9-r1 +3.0.9-r1 < 3.0.9-r2 +3.0.9-r2 < 3.0.10-r0 +3.0.10-r0 < 3.0.12-r0 +3.0.12-r0 < 3.0.12-r1 +3.0.12-r1 < 3.0.12-r2 +3.0.12-r2 < 3.0.12-r3 +3.0.12-r3 < 3.0.13-r0 +3.0.13-r0 < 3.0.13-r1 +3.0.13-r1 < 3.0.14-r0 +3.0.14-r0 < 3.0.15-r0 +3.0.15-r0 < 3.0.16-r0 +3.0.16-r0 < 3.0.17-r0 +3.0.17-r0 < 3.2.1-r0 +3.2.1-r0 < 3.2.2-r0 +3.2.2-r1 < 3.2.2-r2 +3.2.2-r2 < 3.2.2-r3 +3.2.2-r3 < 3.2.4-r0 +3.2.6-r0 < 3.2.7-r0 +3.2.7-r1 < 3.2.9-r0 +3.2.9-r0 < 3.2.11-r0 +3.2.11-r0 < 3.2.12-r0 +3.2.12-r0 < 3.3.0-r0 +3.3.0-r0 < 3.3.2-r0 +3.3.6-r0 < 3.3.6-r1 +3.3.6-r1 < 3.3.6-r2 +3.3.6-r2 < 3.3.7-r0 +3.3.8-r1 < 3.3.8-r2 +3.3.8-r2 < 3.3.8-r3 +3.3.8-r3 < 3.3.8-r4 +3.3.8-r4 < 3.4.7-r0 +3.4.7-r0 < 3.4.9-r0 +3.4.10-r0 < 3.4.10-r1 +3.4.10-r1 < 3.4.11-r0 +3.4.11-r0 < 3.4.11-r1 +3.4.11-r1 < 3.4.11-r2 +3.4.11-r2 < 3.4.13-r0 +3.4.13-r0 < 3.6.2-r0 +3.6.2-r0 < 3.6.3-r0 +3.6.3-r0 < 3.6.4-r0 +3.6.4-r0 < 3.6.4-r1 +3.6.4-r1 < 3.6.5-r0 +3.6.5-r0 < 3.6.6-r0 +3.6.6-r0 < 3.6.6-r1 +3.6.6-r1 < 3.6.6-r2 +3.6.6-r2 < 3.6.7-r0 +3.6.7-r0 < 3.6.8-r1 +3.6.8-r1 < 3.6.9-r0 +3.6.9-r0 < 3.6.9-r1 +3.6.9-r1 < 3.6.9-r2 +3.6.9-r2 < 3.6.9-r3 +3.6.9-r3 < 3.6.10-r0 +3.6.10-r0 < 3.6.11-r0 +3.6.11-r0 < 3.6.11-r1 +3.6.11-r1 < 3.6.11-r2 +3.6.11-r2 < 3.6.11-r3 +3.6.11-r3 < 3.6.11-r4 +3.6.11-r4 < 3.6.11-r5 +3.6.11-r5 < 3.6.11-r6 +3.6.11-r6 < 3.6.11-r7 +3.6.11-r7 < 3.6.11-r8 +3.6.11-r8 < 3.6.11-r9 +3.6.11-r9 < 3.6.11-r10 +3.6.11-r10 < 3.6.11-r11 +3.6.11-r11 < 3.6.11-r12 +3.6.11-r12 < 3.6.11-r13 +3.6.11-r13 < 3.6.11-r14 +3.6.11-r14 < 3.6.11-r15 +3.6.11-r15 < 3.6.11-r16 +3.6.11-r16 < 3.6.11-r17 +3.6.11-r17 < 3.8.2-r17 +3.8.2-r17 < 3.8.3-r17 +3.8.3-r17 < 3.8.5-r17 +3.8.5-r17 < 3.8.6-r17 +3.8.6-r17 < 3.8.7-r17 +3.8.7-r17 < 3.8.8-r17 +3.8.8-r17 < 3.8.10-r17 +3.8.10-r17 < 3.8.11-r17 +3.8.11-r17 < 3.8.12-r17 +3.8.12-r17 < 3.9.2-r17 +3.9.2-r17 < 3.9.3-r17 +3.9.3-r17 < 3.9.4-r17 +3.9.4-r17 < 3.9.5-r17 +3.9.5-r17 < 3.9.6-r17 +3.9.6-r17 < 3.9.7-r17 +3.9.7-r17 < 3.9.8-r17 +3.9.8-r17 < 3.9.9-r17 +3.9.9-r17 < 3.9.11-r17 +3.9.11-r17 < 3.10.4-r17 +3.10.4-r17 < 3.10.5-r17 +3.10.5-r17 < 3.10.7-r17 +3.10.7-r17 < 3.10.9-r17 +3.10.9-r17 < 3.10.10-r17 +3.10.10-r17 < 3.10.11-r17 +3.10.11-r17 < 3.10.12-r17 +3.10.12-r17 < 3.10.13-r17 +3.10.13-r17 < 3.10.14-r17 +3.10.14-r17 < 3.10.15-r17 +3.10.15-r17 < 3.10.16-r17 +3.10.16-r17 < 3.10.17-r17 +3.10.17-r17 < 3.10.18-r17 +3.10.18-r17 < 3.10.19-r17 +3.10.19-r17 < 3.10.20-r17 +3.10.20-r17 < 3.10.21-r17 +3.10.21-r17 < 3.10.22-r17 +3.10.22-r17 < 3.10.23-r17 +3.10.23-r17 < 3.12.4-r17 +3.12.4-r17 < 3.12.5-r17 +3.12.5-r17 < 3.12.6-r17 +3.12.6-r17 < 3.12.7-r17 +3.12.7-r17 < 3.12.8-r17 +3.12.8-r17 < 3.13.7-r17 +3.13.7-r17 < 3.13.8-r17 +3.13.8-r17 < 3.13.10-r17 +3.13.10-r17 < 3.14.2-r17 +3.14.2-r17 < 3.14.4-r17 +3.14.4-r17 < 3.14.5-r17 +3.14.5-r17 < 3.14.6-r17 +3.14.6-r17 < 3.14.8-r17 +3.14.8-r17 < 3.14.10-r17 +3.14.10-r17 < 3.14.11-r17 +3.14.11-r17 < 3.14.12-r17 +3.14.12-r17 < 3.14.13-r17 +3.14.13-r17 < 3.14.14-r17 +3.14.14-r17 < 3.14.15-r17 +3.14.15-r17 < 3.14.16-r17 +3.14.16-r17 < 3.14.17-r17 +3.14.17-r17 < 3.14.18-r17 +3.14.18-r17 < 3.14.19-r17 +3.14.19-r17 < 3.14.20-r17 +3.14.20-r17 < 3.14.21-r17 +3.14.21-r17 < 3.14.22-r17 +3.14.22-r17 < 3.14.23-r17 +3.14.23-r17 < 3.14.24-r17 +3.14.24-r17 < 3.14.25-r17 +3.14.25-r17 < 3.14.26-r17 +3.14.26-r17 < 3.14.27-r17 +3.14.27-r17 < 3.14.28-r17 +3.14.28-r17 < 3.14.29-r17 +3.14.29-r17 < 3.14.30-r17 +3.14.30-r17 < 3.14.31-r17 +3.14.31-r17 < 3.14.32-r17 +3.14.32-r17 < 3.14.33-r17 +3.14.33-r17 < 3.14.34-r17 +3.14.34-r17 < 3.14.35-r17 +3.14.35-r17 < 3.14.36-r17 +3.14.36-r17 < 3.14.37-r17 +3.14.37-r17 < 3.18.11-r17 +3.18.11-r17 < 3.18.12-r17 +3.18.12-r17 < 3.18.13-r17 +3.18.13-r17 < 3.18.14-r17 +3.18.14-r17 < 3.18.16-r17 +3.18.16-r17 < 3.18.17-r17 +3.18.17-r17 < 3.18.18-r17 +3.18.18-r17 < 3.18.19-r17 +3.18.19-r17 < 3.18.20-r17 +3.18.20-r17 < 3.18.21-r17 +3.18.21-r17 < 4.1.10-r17 +4.1.10-r17 < 4.1.11-r17 +4.1.11-r17 < 4.1.12-r17 +4.1.12-r17 < 4.1.13-r17 +4.1.13-r17 < 4.1.15-r17 +4.1.15-r17 < 4.1.17-r17 +4.1.17-r17 < 4.1.18-r17 +4.1.18-r17 < 4.1.19-r17 +4.1.19-r17 < 4.1.20-r17 +1.0.0-r0 < 1.0.0-r1 +1.0.0-r1 < 1.0.1-r0 +1.0.1-r1 < 1.0.2-r0 +1.0.2-r0 < 1.0.3-r0 +1.0.3-r0 < 1.0.4-r0 +1.0.4-r0 < 1.0.4-r1 +1.0.4-r1 < 1.0.5-r0 +1.0.5-r0 < 1.0.6-r0 +1.0.6-r0 < 1.0.7-r0 +1.0.7-r0 < 1.0.8-r0 +1.0.8-r0 < 1.0.9-r0 +1.0.9-r0 < 1.0.9-r1 +1.0.9-r1 < 1.0.10-r0 +1.0.10-r0 < 1.2.0-r0 +1.2.0-r0 < 1.2.1-r0 +1.2.2-r0 < 1.2.3-r0 +1.2.3-r0 < 1.2.4-r0 +1.2.4-r0 < 1.4.0-r0 +1.4.2-r0 < 1.4.3-r0 +1.4.3-r0 < 1.4.4-r0 +1.4.4-r0 < 1.4.5-r0 +1.4.5-r0 < 1.5.2-r0 +1.5.2-r0 < 1.5.2-r1 +1.5.2-r1 < 1.6.1-r0 +1.6.1-r0 < 1.6.3-r0 +1.6.3-r0 < 1.8.0-r0 +1.8.0-r0 < 1.8.1-r0 +1.8.1-r0 < 1.8.1-r1 +1.8.1-r1 < 1.8.1-r2 +1.8.1-r2 < 1.8.1-r3 +2.3.8-r0 < 2.3.8-r1 +2.3.8-r1 < 2.3.12-r0 +2.3.12-r0 < 2.4.0-r0 +2.4.2-r0 < 2.4.3-r0 +2.4.3-r0 < 2.4.4-r0 +2.4.4-r1 < 2.4.4-r2 +2.4.4-r2 < 2.4.4-r3 +2.4.4-r3 < 2.4.5-r0 +2.4.6-r0 < 2.4.7-r0 +2.4.7-r0 < 2.4.8-r0 +2.4.8-r0 < 2.4.9-r0 +2.4.9-r0 < 2.4.10-r0 +2.4.10-r0 < 2.4.11-r0 +2.4.11-r0 < 2.4.12-r0 +2.4.12-r0 < 2.5.0.1-r0 +2.5.0.1-r0 < 2.5.0.1-r1 +2.5.0.1-r1 < 2.5.1-r0 +2.5.1-r2 < 2.5.2-r0 +2.5.3-r0 < 2.5.3-r1 +2.5.3-r1 < 2.5.4-r0 +2.5.4-r0 < 2.5.4-r1 +2.5.4-r1 < 2.5.5-r0 +2.5.5-r0 < 2.6-r0 +2.6-r0 < 2.6-r1 +2.6-r1 < 2.6-r2 +2.6-r2 < 2.6-r3 +2.6-r3 < 2.6-r4 +2.6-r4 < 2.6.2-r0 +2.6.2-r0 < 2.6.2-r4 +2.6.2-r4 < 2.6.3-r0 +2.6.3-r0 < 2.6.3-r4 +2.6.3-r4 < 2.7-r0 +2.7-r0 < 2.7-r4 +2.7-r4 < 2.7.1-r0 +2.7.1-r1 < 2.8-r0 +2.8-r2 < 2.8-r3 +2.8-r3 < 2.8.1-r0 +2.8.1-r0 < 2.8.1-r1 +2.8.1-r1 < 2.8.1-r2 +2.8.1-r2 < 2.8.1-r3 +2.8.1-r3 < 2.9-r0 +2.9-r0 < 2.9-r1 +2.9-r1 < 2.9.1-r0 +2.9.1-r0 < 2.9.1-r1 +2.9.1-r1 < 2.9.1-r2 +2.9.1-r2 < 2.10.0-r0 +2.10.0-r0 < 2.10.0-r2 +2.10.0-r2 < 2.10.1-r0 +2.10.1-r0 < 2.10.1-r2 +2.10.1-r2 < 2.10.2-r0 +2.10.2-r0 < 2.10.2-r2 +2.10.2-r2 < 2.10.3-r0 +2.10.3-r0 < 2.10.3-r2 +2.10.3-r2 < 2.10.4-r0 +2.10.4-r0 < 2.10.4-r1 +2.10.4-r1 < 2.10.4-r2 +2.10.4-r2 < 2.11.0-r0 +2.11.0-r0 < 2.11.0-r1 +2.11.0-r1 < 2.11.1-r0 +2.11.1-r0 < 2.11.1-r1 +0.1.11-r0 < 0.1.11-r1 +0.1.11-r1 < 0.1.11-r2 +0.1.11-r2 < 0.2.0-r0 +0.2.0-r0 < 0.2.0-r2 +0.2.0-r2 < 0.3.0-r0 +3.2.5-r1 < 3.3.0-r1 +3.3.0-r1 < 3.3.1-r0 +3.3.1-r1 < 3.3.1-r2 +3.3.1-r2 < 3.3.1-r3 +3.3.1-r3 < 3.3.1-r4 +3.3.1-r4 < 3.3.1-r5 +3.3.1-r5 < 3.3.1-r6 +3.3.1-r6 < 3.3.1-r7 +3.3.1-r7 < 3.3.1-r8 +3.3.1-r8 < 3.3.1-r9 +3.3.1-r9 < 3.3.2-r0 +3.3.2-r1 < 3.4.0-r0 +3.4.0-r0 < 3.4.0-r1 +3.4.0-r1 < 3.4.0-r2 +3.4.0-r2 < 3.4.1-r0 +3.4.1-r0 < 3.4.1-r1 +3.4.1-r1 < 3.4.1-r2 +3.4.1-r2 < 3.4.1-r3 +3.4.1-r3 < 3.4.1-r4 +3.4.1-r4 < 3.4.1-r5 +3.4.1-r5 < 3.4.1-r6 +3.4.1-r6 < 3.4.1-r7 +3.4.1-r7 < 3.4.1-r8 +3.4.1-r8 < 3.4.2-r0 +3.4.2-r0 < 3.4.2-r1 +3.4.2-r1 < 3.4.2-r2 +3.4.2-r2 < 3.4.2-r3 +3.4.2-r3 < 3.4.2-r4 +3.4.2-r4 < 3.4.2-r5 +3.4.2-r5 < 3.4.2-r8 +3.4.2-r8 < 3.4.3-r0 +3.4.3-r0 < 3.4.3-r1 +3.4.3-r1 < 3.4.4-r0 +3.4.4-r0 < 3.4.4-r1 +3.4.4-r1 < 3.4.4-r2 +3.4.4-r2 < 3.4.4-r3 +5.10.0-r0 < 5.10.0-r1 +5.10.0-r1 < 5.10.1-r0 +5.10.1-r0 < 5.10.1-r1 +5.10.1-r1 < 5.10.1-r2 +5.10.1-r2 < 5.12.1-r0 +5.12.1-r0 < 5.12.2-r0 +5.12.2-r0 < 5.12.2-r1 +5.12.2-r1 < 5.12.3-r0 +5.12.3-r0 < 5.14.0-r0 +5.14.0-r0 < 5.14.1-r0 +5.14.1-r0 < 5.14.2-r0 +5.14.2-r0 < 5.14.2-r1 +5.14.2-r1 < 5.16.0-r0 +5.16.0-r0 < 5.16.1-r0 +5.16.1-r0 < 5.16.2-r0 +5.16.2-r0 < 5.16.3-r0 +5.16.3-r0 < 5.18.0-r0 +5.18.0-r0 < 5.18.1-r0 +5.18.1-r0 < 5.18.2-r0 +5.18.2-r0 < 5.20.0-r0 +5.20.0-r0 < 5.20.1-r0 +5.20.1-r0 < 5.20.2-r0 +5.20.2-r0 < 5.20.2-r1 +5.20.2-r1 < 5.22.0-r0 +5.22.0-r0 < 5.22.0-r1 +5.22.0-r1 < 5.22.1-r0 +5.22.1-r0 < 5.22.1-r1 +5.22.1-r1 < 5.22.2-r0 +5.22.2-r0 < 5.22.2-r1 +5.22.2-r1 < 5.24.0-r0 +5.24.0-r0 < 5.24.0-r1 +5.24.0-r1 < 5.24.0-r2 +5.24.0-r2 < 5.24.1-r0 +5.24.1-r0 < 5.24.1-r1 +5.24.1-r1 < 5.24.1-r2 +5.24.1-r2 < 5.24.3-r0 +5.24.3-r0 < 5.24.3-r1 +5.24.3-r1 < 5.24.4-r1 +5.24.4-r1 < 5.26.0-r0 +5.26.0-r0 < 5.26.1-r0 +5.26.1-r0 < 5.26.1-r1 +5.26.1-r1 < 5.26.2-r0 +5.26.2-r0 < 5.26.2-r1 +5.26.2-r1 < 5.26.3-r0 +5.26.3-r0 < 5.28.1-r0 +5.28.1-r0 < 5.28.2-r0 +5.28.2-r0 < 5.28.2-r1 +5.28.2-r1 < 5.30.0-r0 +5.30.0-r0 < 5.30.0-r1 +5.30.0-r1 < 5.30.0-r2 +5.30.0-r2 < 5.30.1-r0 +5.30.1-r0 < 5.30.1-r2 +5.30.1-r2 < 5.30.2-r0 +5.30.2-r0 < 5.30.2-r2 +5.30.2-r2 < 5.30.3-r0 +5.30.3-r0 < 5.30.3-r1 +5.30.3-r1 < 5.30.3-r2 +5.30.3-r2 < 5.32.0-r0 +5.32.0-r0 < 5.32.1-r0 +5.32.1-r0 < 5.34.0-r0 +5.34.0-r0 < 5.34.0-r1 +5.34.0-r1 < 5.34.1-r0 +5.34.1-r0 < 5.34.1-r1 +5.34.1-r1 < 5.36.0-r0 +5.36.0-r0 < 5.36.0-r1 +5.36.0-r1 < 5.36.0-r2 +5.36.0-r2 < 5.36.0-r3 +5.36.0-r3 < 5.36.1-r0 +5.36.1-r0 < 5.36.1-r1 +5.36.1-r1 < 5.36.1-r2 +5.36.1-r2 < 5.36.1-r3 +5.36.1-r3 < 5.38.0-r3 +2.5.9-r0 < 2.6-r0 +2.6-r0 < 2.6.1-r0 +2.6.1-r2 < 2.6.1-r3 +2.6.1-r3 < 2.7-r0 +2.7.1-r1 < 2.7.3-r0 +2.7.3-r0 < 2.7.3-r1 +2.7.3-r1 < 2.7.4-r0 +2.7.4-r0 < 2.7.4-r1 +2.7.4-r1 < 2.7.5-r0 +2.7.5-r0 < 2.7.5-r1 +2.7.5-r1 < 2.7.5-r2 +2.7.5-r2 < 2.7.5-r3 +2.7.5-r3 < 2.7.6-r1 +7.8-r0 < 7.8-r1 +7.8-r1 < 7.9-r0 +7.9-r0 < 8.00-r0 +8.00-r0 < 8.01-r0 +8.01-r0 < 8.02-r0 +8.02-r0 < 8.02-r1 +8.02-r1 < 8.10-r0 +8.10-r0 < 8.10-r1 +8.10-r1 < 8.10-r2 +8.10-r2 < 8.10-r3 +8.10-r3 < 8.11-r0 +8.11-r0 < 8.11-r1 +8.11-r1 < 8.12-r0 +8.12-r0 < 8.12-r1 +8.12-r1 < 8.13-r0 +8.13-r0 < 8.20-r0 +8.20-r0 < 8.21-r0 +8.21-r0 < 8.30-r0 +8.30-r0 < 8.31-r0 +8.31-r0 < 8.32-r0 +8.32-r0 < 8.32-r1 +8.32-r1 < 8.33-r1 +8.33-r1 < 8.34-r0 +8.34-r0 < 8.35-r0 +8.35-r0 < 8.36-r0 +8.36-r0 < 8.36-r1 +8.36-r1 < 8.37-r0 +8.37-r0 < 8.37-r1 +8.37-r1 < 8.37-r2 +8.37-r2 < 8.38-r0 +8.38-r0 < 8.38-r1 +8.38-r1 < 8.39-r0 +8.39-r0 < 8.40-r0 +8.40-r0 < 8.40-r1 +8.40-r1 < 8.40-r2 +8.40-r2 < 8.41-r0 +8.41-r0 < 8.41-r1 +8.41-r1 < 8.42-r0 +8.42-r0 < 8.42-r1 +8.42-r1 < 8.43-r1 +2.11.0-r0 < 2.12-r0 +2.12-r0 < 2.13-r0 +2.13-r0 < 2.13.2-r0 +2.13.2-r0 < 2.13.2-r1 +2.13.2-r1 < 2.13.2-r2 +2.13.2-r2 < 2.13.2-r3 +2.13.2-r3 < 2.13.3-r0 +2.13.3-r0 < 2.13.3-r1 +2.13.3-r1 < 2.13.3-r2 +2.13.3-r2 < 2.13.3-r3 +2.13.3-r3 < 2.13.4-r0 +2.13.4-r0 < 2.13.4-r1 +2.13.4-r1 < 3.0.1-r0 +3.0.1-r0 < 3.0.3-r0 +3.0.3-r2 < 3.0.4-r0 +3.0.4-r0 < 3.0.4-r1 +3.0.4-r1 < 3.0.4-r2 +3.0.4-r3 < 3.1.1-r3 +7.2.284-r0 < 7.2.394-r0 +7.2.394-r0 < 7.2.394-r1 +7.2.394-r1 < 7.2.411-r0 +7.2.411-r0 < 7.2.411-r1 +7.2.411-r1 < 7.3-r0 +7.3-r0 < 7.3-r1 +7.3-r1 < 7.3.003-r0 +7.3.003-r0 < 7.3.003-r1 +7.3.003-r1 < 7.3.82-r0 +7.3.82-r0 < 7.3.82-r1 +7.3.82-r1 < 7.3.112-r0 +7.3.112-r0 < 7.3.112-r1 +7.3.112-r1 < 7.3.154-r0 +7.3.154-r0 < 7.3.154-r1 +7.3.154-r1 < 7.3.198-r0 +7.3.198-r0 < 7.3.198-r1 +7.3.198-r1 < 7.3.206-r0 +7.3.206-r0 < 7.3.206-r1 +7.3.206-r1 < 7.3.266-r0 +7.3.266-r0 < 7.3.266-r1 +7.3.266-r1 < 7.3.333-r0 +7.3.333-r0 < 7.3.333-r1 +7.3.333-r1 < 7.3.364-r0 +7.3.364-r0 < 7.3.364-r1 +7.3.364-r1 < 7.3.401-r0 +7.3.401-r0 < 7.3.401-r1 +7.3.401-r1 < 7.3.434-r0 +7.3.434-r0 < 7.3.434-r1 +7.3.434-r1 < 7.3.495-r0 +7.3.495-r0 < 7.3.495-r1 +7.3.495-r1 < 7.3.515-r0 +7.3.515-r0 < 7.3.515-r1 +7.3.515-r1 < 7.3.547-r0 +7.3.547-r0 < 7.3.547-r1 +7.3.547-r1 < 7.3.600-r0 +7.3.600-r0 < 7.3.600-r1 +7.3.600-r1 < 7.3.659-r0 +7.3.659-r0 < 7.3.659-r1 +7.3.659-r1 < 7.3.661-r0 +7.3.661-r0 < 7.3.661-r1 +7.3.661-r1 < 7.3.692-r0 +7.3.692-r0 < 7.3.692-r1 +7.3.692-r1 < 7.3.712-r0 +7.3.712-r0 < 7.3.712-r1 +7.3.712-r1 < 7.3.754-r0 +7.3.754-r0 < 7.3.754-r1 +7.3.754-r1 < 7.3.1070-r0 +7.3.1070-r0 < 7.3.1070-r1 +7.3.1070-r1 < 7.3.1136-r0 +7.3.1136-r0 < 7.3.1136-r1 +7.3.1136-r1 < 7.4-r0 +7.4-r0 < 7.4-r1 +7.4-r1 < 7.4-r2 +7.4-r2 < 7.4-r3 +7.4-r3 < 7.4.712-r0 +7.4.712-r0 < 7.4.712-r1 +7.4.712-r1 < 7.4.861-r0 +7.4.861-r0 < 7.4.861-r1 +7.4.861-r1 < 7.4.943-r0 +7.4.943-r0 < 7.4.943-r1 +7.4.943-r1 < 7.4.943-r2 +7.4.943-r2 < 7.4.1225-r0 +7.4.1225-r0 < 7.4.1225-r1 +7.4.1225-r1 < 7.4.1591-r0 +7.4.1591-r0 < 7.4.1591-r1 +7.4.1591-r1 < 7.4.1831-r0 +7.4.1831-r0 < 7.4.1831-r1 +7.4.1831-r1 < 7.4.2028-r0 +7.4.2028-r0 < 7.4.2028-r1 +7.4.2028-r1 < 8.0.0003-r0 +8.0.0003-r0 < 8.0.0003-r1 +8.0.0003-r1 < 8.0.0008-r0 +8.0.0008-r0 < 8.0.0008-r1 +8.0.0008-r1 < 8.0.0027-r0 +8.0.0027-r0 < 8.0.0027-r1 +8.0.0027-r1 < 8.0.0056-r0 +8.0.0056-r0 < 8.0.0056-r1 +8.0.0056-r1 < 8.0.0178-r0 +8.0.0178-r0 < 8.0.0178-r1 +8.0.0178-r1 < 8.0.0187-r0 +8.0.0187-r0 < 8.0.0187-r1 +8.0.0187-r1 < 8.0.0329-r0 +8.0.0329-r0 < 8.0.0329-r1 +8.0.0329-r1 < 8.0.0348-r0 +8.0.0348-r0 < 8.0.0348-r1 +8.0.0348-r1 < 8.0.0349-r0 +8.0.0349-r0 < 8.0.0349-r1 +8.0.0349-r1 < 8.0.0460-r0 +8.0.0460-r0 < 8.0.0460-r1 +8.0.0460-r1 < 8.0.0559-r0 +8.0.0559-r0 < 8.0.0559-r1 +8.0.0559-r1 < 8.0.0594-r0 +8.0.0594-r0 < 8.0.0594-r1 +8.0.0594-r1 < 8.0.0595-r0 +8.0.0595-r0 < 8.0.0595-r1 +8.0.0595-r1 < 8.0.0642-r0 +8.0.0642-r0 < 8.0.0642-r1 +8.0.0642-r1 < 8.0.0972-r0 +8.0.0972-r0 < 8.0.0972-r1 +8.0.0972-r1 < 8.0.0974-r0 +8.0.0974-r0 < 8.0.0974-r1 +8.0.0974-r1 < 8.0.1137-r0 +8.0.1137-r0 < 8.0.1137-r1 +8.0.1137-r1 < 8.0.1171-r0 +8.0.1171-r0 < 8.0.1171-r1 +8.0.1171-r1 < 8.0.1240-r0 +8.0.1240-r0 < 8.0.1240-r1 +8.0.1240-r1 < 8.0.1300-r0 +8.0.1300-r0 < 8.0.1300-r1 +8.0.1300-r1 < 8.0.1359-r0 +8.0.1359-r0 < 8.0.1359-r1 +8.0.1359-r1 < 8.0.1367-r0 +8.0.1367-r0 < 8.0.1424-r0 +8.0.1424-r0 < 8.0.1424-r1 +8.0.1424-r1 < 8.0.1521-r0 +8.0.1521-r0 < 8.0.1521-r1 +8.0.1521-r1 < 8.0.1727-r0 +8.0.1727-r0 < 8.0.1727-r1 +8.0.1727-r1 < 8.1.0022-r0 +8.1.0022-r0 < 8.1.0022-r1 +8.1.0022-r1 < 8.1.0026-r0 +8.1.0026-r0 < 8.1.0026-r1 +8.1.0026-r1 < 8.1.0077-r0 +8.1.0077-r0 < 8.1.0077-r1 +8.1.0077-r1 < 8.1.0115-r0 +8.1.0115-r0 < 8.1.0115-r1 +8.1.0115-r1 < 8.1.0630-r0 +8.1.0630-r0 < 8.1.0630-r1 +8.1.0630-r1 < 8.1.0829-r0 +8.1.0829-r0 < 8.1.0829-r1 +8.1.0829-r1 < 8.1.1075-r0 +8.1.1075-r0 < 8.1.1075-r1 +8.1.1075-r1 < 8.1.1364-r0 +8.1.1364-r0 < 8.1.1364-r1 +8.1.1364-r1 < 8.1.1365-r0 +8.1.1365-r0 < 8.1.2137-r0 +8.1.2137-r0 < 8.1.2137-r1 +8.1.2137-r1 < 8.1.2300-r0 +8.1.2300-r0 < 8.1.2300-r1 +8.1.2300-r1 < 8.2.0-r0 +8.2.0-r1 < 8.2.0357-r0 +8.2.0357-r0 < 8.2.0357-r1 +8.2.0357-r1 < 8.2.0735-r0 +8.2.0735-r0 < 8.2.0735-r1 +8.2.0735-r1 < 8.2.1017-r0 +8.2.1017-r0 < 8.2.1168-r0 +8.2.1168-r0 < 8.2.1353-r0 +8.2.1353-r0 < 8.2.1419-r0 +8.2.1419-r0 < 8.2.1736-r0 +8.2.1736-r0 < 8.2.1843-r0 +8.2.1843-r0 < 8.2.1843-r1 +8.2.1843-r1 < 8.2.1843-r2 +8.2.1843-r2 < 8.2.2013-r0 +8.2.2013-r0 < 8.2.2013-r2 +8.2.2013-r2 < 8.2.2084-r0 +8.2.2084-r0 < 8.2.2084-r2 +8.2.2084-r2 < 8.2.2137-r0 +8.2.2137-r0 < 8.2.2137-r2 +8.2.2137-r2 < 8.2.2303-r0 +8.2.2303-r0 < 8.2.2303-r2 +8.2.2303-r2 < 8.2.2320-r0 +8.2.2320-r0 < 8.2.2320-r2 +8.2.2320-r2 < 8.2.2404-r0 +8.2.2404-r0 < 8.2.2559-r0 +8.2.2559-r0 < 8.2.2677-r0 +8.2.2677-r0 < 8.2.2677-r1 +8.2.2677-r1 < 8.2.2800-r0 +8.2.2800-r0 < 8.2.2822-r0 +8.2.2822-r0 < 8.2.2822-r1 +8.2.2822-r1 < 8.2.2852-r0 +8.2.2852-r0 < 8.2.2852-r1 +8.2.2852-r1 < 8.2.2956-r0 +8.2.2956-r0 < 8.2.2956-r1 +8.2.2956-r1 < 8.2.2968-r0 +8.2.2968-r0 < 8.2.3082-r0 +8.2.3082-r0 < 8.2.3156-r0 +8.2.3156-r0 < 8.2.3275-r0 +8.2.3275-r0 < 8.2.3300-r0 +8.2.3300-r0 < 8.2.3437-r0 +8.2.3437-r0 < 8.2.3437-r1 +8.2.3437-r1 < 8.2.3437-r2 +8.2.3437-r2 < 8.2.3500-r0 +8.2.3500-r0 < 8.2.3500-r1 +8.2.3500-r1 < 8.2.3500-r2 +8.2.3500-r2 < 8.2.3567-r0 +8.2.3567-r0 < 8.2.3567-r1 +8.2.3567-r1 < 8.2.3567-r2 +8.2.3567-r2 < 8.2.3650-r0 +8.2.3650-r0 < 8.2.3650-r1 +8.2.3650-r1 < 8.2.3650-r2 +8.2.3650-r2 < 8.2.3779-r0 +8.2.3779-r0 < 8.2.3779-r1 +8.2.3779-r1 < 8.2.3779-r2 +8.2.3779-r2 < 8.2.4173-r0 +8.2.4173-r0 < 8.2.4173-r1 +8.2.4173-r1 < 8.2.4173-r2 +8.2.4173-r2 < 8.2.4350-r0 +8.2.4350-r0 < 8.2.4542-r0 +8.2.4542-r0 < 8.2.4542-r1 +8.2.4542-r1 < 8.2.4619-r0 +8.2.4619-r0 < 8.2.4619-r1 +8.2.4619-r1 < 8.2.4619-r2 +8.2.4619-r2 < 8.2.4708-r0 +8.2.4708-r0 < 8.2.4708-r1 +8.2.4708-r1 < 8.2.4708-r2 +8.2.4708-r2 < 8.2.4836-r0 +8.2.4836-r0 < 8.2.4836-r1 +8.2.4836-r1 < 8.2.4969-r0 +8.2.4969-r0 < 8.2.4969-r1 +8.2.4969-r1 < 8.2.5000-r0 +8.2.5000-r0 < 8.2.5000-r1 +8.2.5000-r1 < 8.2.5055-r0 +8.2.5055-r0 < 8.2.5055-r1 +8.2.5055-r1 < 8.2.5170-r0 +8.2.5170-r0 < 8.2.5170-r1 +8.2.5170-r1 < 9.0.0009-r0 +9.0.0009-r0 < 9.0.0009-r1 +9.0.0009-r1 < 9.0.0050-r0 +9.0.0050-r0 < 9.0.0050-r1 +9.0.0050-r1 < 9.0.0124-r0 +9.0.0124-r0 < 9.0.0124-r1 +9.0.0124-r1 < 9.0.0224-r0 +9.0.0224-r0 < 9.0.0224-r1 +9.0.0224-r1 < 9.0.0234-r0 +9.0.0234-r0 < 9.0.0234-r1 +9.0.0234-r1 < 9.0.0270-r0 +9.0.0270-r0 < 9.0.0270-r1 +9.0.0270-r1 < 9.0.0369-r0 +9.0.0369-r0 < 9.0.0369-r1 +9.0.0369-r1 < 9.0.0437-r0 +9.0.0437-r0 < 9.0.0437-r1 +9.0.0437-r1 < 9.0.0598-r0 +9.0.0598-r0 < 9.0.0598-r1 +9.0.0598-r1 < 9.0.0636-r0 +9.0.0636-r0 < 9.0.0636-r1 +9.0.0636-r1 < 9.0.0693-r0 +9.0.0693-r0 < 9.0.0693-r1 +9.0.0693-r1 < 9.0.0728-r0 +9.0.0728-r0 < 9.0.0728-r1 +9.0.0728-r1 < 9.0.0792-r0 +9.0.0792-r0 < 9.0.0792-r1 +9.0.0792-r1 < 9.0.0815-r0 +9.0.0815-r0 < 9.0.0815-r1 +9.0.0815-r1 < 9.0.0820-r0 +9.0.0820-r0 < 9.0.0820-r1 +9.0.0820-r1 < 9.0.0999-r0 +9.0.0999-r0 < 9.0.1085-r0 +9.0.1085-r0 < 9.0.1093-r0 +9.0.1093-r0 < 9.0.1107-r0 +9.0.1107-r0 < 9.0.1128-r0 +9.0.1128-r0 < 9.0.1167-r0 +9.0.1167-r0 < 9.0.1188-r0 +9.0.1188-r0 < 9.0.1198-r0 +9.0.1198-r0 < 9.0.1215-r0 +9.0.1215-r0 < 9.0.1251-r0 +9.0.1251-r0 < 9.0.1261-r0 +9.0.1261-r0 < 9.0.1291-r0 +9.0.1291-r0 < 9.0.1294-r0 +9.0.1294-r0 < 9.0.1304-r0 +9.0.1304-r0 < 9.0.1313-r0 +9.0.1313-r0 < 9.0.1313-r1 +9.0.1313-r1 < 9.0.1337-r0 +9.0.1337-r0 < 9.0.1337-r1 +9.0.1337-r1 < 9.0.1395-r0 +0.9.8i-r0 < 0.9.8j-r0 +0.9.8j-r0 < 0.9.8k-r0 +0.9.8k-r0 < 0.9.8k-r1 +0.9.8k-r1 < 0.9.8k-r2 +0.9.8k-r2 < 0.9.8k-r3 +0.9.8k-r3 < 0.9.8k-r4 +0.9.8k-r4 < 0.9.8k-r5 +0.9.8k-r5 < 0.9.8k-r6 +0.9.8k-r6 < 0.9.8k-r7 +0.9.8k-r7 < 0.9.8l-r0 +0.9.8l-r0 < 0.9.8l-r1 +0.9.8l-r1 < 0.9.8m-r0 +0.9.8m-r0 < 0.9.8n-r0 +0.9.8n-r0 < 0.9.8n-r1 +0.9.8n-r1 < 1.0.0-r0 +1.0.0-r0 < 1.0.0a-r0 +1.0.0a-r0 < 1.0.0a-r1 +1.0.0a-r1 < 1.0.0a-r2 +1.0.0a-r2 < 1.0.0a-r3 +1.0.0a-r3 < 1.0.0a-r4 +1.0.0a-r4 < 1.0.0b-r0 +1.0.0b-r0 < 1.0.0c-r0 +1.0.0c-r0 < 1.0.0d-r0 +1.0.0d-r0 < 1.0.0e-r0 +1.0.0e-r0 < 1.0.0f-r0 +1.0.0f-r0 < 1.0.0g-r0 +1.0.0g-r0 < 1.0.0h-r0 +1.0.0h-r0 < 1.0.1-r0 +1.0.1-r0 < 1.0.1a-r0 +1.0.1a-r0 < 1.0.1b-r0 +1.0.1b-r0 < 1.0.1c-r0 +1.0.1c-r0 < 1.0.1c-r1 +1.0.1c-r1 < 1.0.1c-r2 +1.0.1c-r2 < 1.0.1c-r3 +1.0.1c-r3 < 1.0.1d-r0 +1.0.1d-r0 < 1.0.1d-r1 +1.0.1d-r1 < 1.0.1e-r0 +1.0.1e-r0 < 1.0.1e-r1 +1.0.1e-r1 < 1.0.1e-r2 +1.0.1e-r2 < 1.0.1e-r3 +1.0.1e-r3 < 1.0.1e-r4 +1.0.1e-r4 < 1.0.1e-r5 +1.0.1e-r5 < 1.0.1e-r6 +1.0.1e-r6 < 1.0.1e-r7 +1.0.1e-r7 < 1.0.1f-r0 +1.0.1f-r0 < 1.0.1g-r0 +1.0.1g-r0 < 1.0.1g-r1 +1.0.1g-r1 < 1.0.1g-r2 +1.0.1g-r2 < 1.0.1g-r3 +1.0.1g-r3 < 1.0.1h-r0 +1.0.1h-r0 < 1.0.1i-r0 +1.0.1i-r0 < 1.0.1i-r1 +1.0.1i-r1 < 1.0.1i-r2 +1.0.1i-r2 < 1.0.1i-r3 +1.0.1i-r3 < 1.0.1j-r0 +1.0.1j-r0 < 1.0.1k-r0 +1.0.1k-r0 < 1.0.1l-r0 +1.0.1l-r0 < 1.0.2-r0 +1.0.2-r0 < 1.0.2a-r0 +1.0.2a-r0 < 1.0.2a-r1 +1.0.2a-r1 < 1.0.2b-r0 +1.0.2b-r0 < 1.0.2c-r0 +1.0.2c-r0 < 1.0.2d-r0 +1.0.2d-r0 < 1.0.2e-r0 +1.0.2e-r0 < 1.0.2e-r1 +1.0.2e-r1 < 1.0.2f-r0 +1.0.2f-r0 < 1.0.2f-r1 +1.0.2f-r1 < 1.0.2f-r2 +1.0.2f-r2 < 1.0.2g-r0 +1.0.2g-r0 < 1.0.2g-r1 +1.0.2g-r1 < 1.0.2g-r2 +1.0.2g-r2 < 1.0.2g-r3 +1.0.2g-r3 < 1.0.2h-r0 +1.0.2h-r0 < 1.0.2h-r1 +1.0.2h-r1 < 1.0.2h-r2 +1.0.2h-r2 < 1.0.2h-r3 +1.0.2h-r3 < 1.0.2h-r4 +1.0.2h-r4 < 1.0.2i-r0 +1.0.2i-r0 < 1.0.2i-r4 +1.0.2i-r4 < 1.0.2j-r0 +1.0.2j-r0 < 1.0.2j-r1 +1.0.2j-r1 < 1.0.2j-r2 +1.0.2j-r2 < 1.0.2j-r4 +1.0.2j-r4 < 1.0.2k-r0 +1.0.2k-r0 < 1.0.2l-r0 +1.0.2l-r0 < 1.0.2m-r0 +1.0.2m-r0 < 1.0.2n-r0 +1.0.2n-r0 < 1.0.2o-r0 +1.0.2o-r0 < 1.0.2o-r1 +1.0.2o-r1 < 1.0.2o-r2 +1.0.2o-r2 < 1.0.2p-r1 +1.0.2p-r1 < 1.0.2p-r2 +1.0.2p-r2 < 1.0.2q-r1 +1.0.2q-r1 < 1.0.2q-r2 +1.0.2q-r2 < 1.0.2r-r1 +1.0.2r-r1 < 1.0.2r-r2 +1.0.2r-r2 < 1.0.2t-r2 +0.4.2-r0 < 0.6.0-r0 +0.6.0-r0 < 0.6.0-r1 +0.6.0-r1 < 0.7.0-r0 +0.7.0-r0 < 0.7.0-r1 +0.7.0-r1 < 0.8.0-r0 +0.8.0-r0 < 0.8.0-r1 +0.8.0-r1 < 0.8.1-r0 +0.8.1-r0 < 0.8.1-r1 +0.8.1-r1 < 0.8.3-r0 +0.8.3-r0 < 0.8.3-r1 +0.8.3-r1 < 0.8.3-r2 +0.8.3-r2 < 0.8.3-r3 +0.8.3-r3 < 0.8.3-r4 +0.8.3-r4 < 0.8.6-r0 +0.8.6-r0 < 0.8.6-r1 +0.8.6-r1 < 0.8.6-r2 +0.8.6-r2 < 0.9.1-r0 +0.9.1-r0 < 0.9.1-r2 +3.1.3-r0 < 3.2.0-r0 +3.2.0-r0 < 3.2.3-r0 +3.2.3-r0 < 3.3.0-r0 +3.3.4-r0 < 3.4.1-r0 +3.4.1-r0 < 3.4.2-r0 +3.4.2-r1 < 3.4.3-r1 +3.4.3-r1 < 3.4.3-r2 +3.4.3-r2 < 3.5.0-r0 +3.5.0-r0 < 3.5.1-r0 +3.5.1-r0 < 3.5.1-r1 +3.5.1-r1 < 3.5.1-r2 +3.5.1-r2 < 3.5.1-r3 +3.5.1-r3 < 3.5.2-r3 +3.5.2-r3 < 3.6.0-r3 +3.6.0-r3 < 3.6.1-r3 +3.6.1-r3 < 3.6.2-r3 +3.6.2-r3 < 3.6.3-r3 +3.6.3-r3 < 3.6.4-r3 +3.6.4-r3 < 3.6.5-r3 +3.6.5-r3 < 3.6.6-r3 +3.6.6-r3 < 3.6.7-r3 +3.6.7-r3 < 3.6.8-r3 +3.6.8-r3 < 3.7.2-r3 +3.7.2-r3 < 3.7.3-r3 +3.7.3-r3 < 3.7.4-r3 +3.7.4-r3 < 3.7.5-r3 +3.7.5-r3 < 3.8.0-r3 +3.8.0-r3 < 3.8.1-r3 +3.8.1-r3 < 3.8.2-r3 +3.8.2-r3 < 3.8.3-r3 +3.8.3-r3 < 3.8.4-r3 +3.8.4-r3 < 3.8.5-r3 +3.8.5-r3 < 3.8.6-r3 +3.8.6-r3 < 3.8.7-r3 +3.8.7-r3 < 3.8.8-r3 +3.8.8-r3 < 3.9.1-r3 +3.9.1-r3 < 3.9.2-r3 +3.9.2-r3 < 3.9.4-r3 +3.9.4-r3 < 3.9.5-r3 +3.9.5-r3 < 3.9.6-r3 +3.9.6-r3 < 3.9.7-r3 +3.9.7-r3 < 3.9.13-r3 +3.9.13-r3 < 3.9.15-r3 +3.9.15-r3 < 3.9.16-r3 +3.9.16-r3 < 3.9.17-r3 +3.9.17-r3 < 3.10.0-r3 +3.10.0-r3 < 3.10.1-r3 +3.10.1-r3 < 3.10.2-r3 +3.10.2-r3 < 3.10.3-r3 +3.10.3-r3 < 3.10.4-r3 +3.10.4-r3 < 3.10.5-r3 +3.10.5-r3 < 3.10.6-r3 +3.10.6-r3 < 3.10.7-r3 +3.10.7-r3 < 3.10.8-r3 +3.10.8-r3 < 3.10.9-r3 +3.10.9-r3 < 3.10.10-r3 +3.10.10-r3 < 3.10.11-r3 +3.10.11-r3 < 3.10.12-r3 +3.10.12-r3 < 3.10.13-r3 +3.10.13-r3 < 3.11.0-r3 +3.11.0-r3 < 3.11.1-r3 +3.11.1-r3 < 3.11.2-r3 +3.11.2-r3 < 3.11.3-r3 +3.11.3-r3 < 3.11.4-r3 +3.2.8-r1 < 3.2.10-r0 +3.2.10-r0 < 3.2.11-r0 +3.2.11-r0 < 3.2.11-r1 +3.2.11-r1 < 3.3.4-r0 +3.3.5-r0 < 3.3.5-r1 +3.3.5-r1 < 3.3.5-r2 +3.3.5-r2 < 3.3.6-r0 +3.3.7-r0 < 3.3.7-r1 +3.3.7-r1 < 3.3.7-r2 +3.3.7-r2 < 3.3.7-r3 +3.3.7-r3 < 3.3.7-r4 +3.3.7-r4 < 3.3.8-r0 +3.3.8-r0 < 3.4.3-r0 +3.4.4-r0 < 3.4.5-r0 +3.4.5-r0 < 3.4.5-r1 +3.4.5-r1 < 3.4.7-r0 +3.4.7-r0 < 3.4.7-r1 +3.4.7-r1 < 3.5.2-r0 +3.5.2-r0 < 3.5.3-r0 +3.5.4-r1 < 3.5.5-r0 +3.5.6-r1 < 3.5.6-r2 +3.5.6-r2 < 3.5.6-r3 +3.5.6-r3 < 3.5.6-r4 +3.5.6-r4 < 3.5.7-r0 +3.5.8-r0 < 3.5.9-r0 +3.5.9-r1 < 3.5.10-r0 +3.5.11-r0 < 3.6.1-r0 +3.6.6-r0 < 3.6.7-r0 +3.6.7-r0 < 3.6.7-r1 +3.6.7-r1 < 3.6.8-r0 +3.6.8-r0 < 3.6.8-r1 +3.6.9-r0 < 3.6.10-r0 +3.6.11-r0 < 3.6.12-r0 +3.6.12-r0 < 3.6.13-r0 +3.6.13-r0 < 3.6.13-r1 +3.6.13-r1 < 3.6.15-r0 +3.6.15-r0 < 3.6.16-r0 +3.6.16-r0 < 3.6.19-r0 +3.6.19-r0 < 3.6.19-r1 +3.6.19-r1 < 4.1.0-r1 +4.1.1-r0 < 4.1.2-r0 +4.1.2-r0 < 4.1.3-r0 +4.1.3-r0 < 4.1.3-r1 +4.1.3-r1 < 4.1.3-r2 +4.1.3-r2 < 4.1.4-r0 +4.1.4-r0 < 4.1.5-r0 +4.1.5-r0 < 4.1.5-r1 +4.1.5-r1 < 4.1.6-r0 +4.1.6-r0 < 4.1.7-r0 +4.1.7-r0 < 4.1.8-r0 +4.1.8-r0 < 4.1.9-r0 +4.1.9-r0 < 4.1.10-r0 +4.1.10-r0 < 4.1.11-r0 +4.1.11-r0 < 4.1.12-r0 +4.1.12-r0 < 4.1.13-r0 +4.1.13-r0 < 4.1.14-r0 +4.1.14-r0 < 4.1.14-r1 +4.1.14-r1 < 4.1.15-r0 +4.1.15-r0 < 4.1.16-r0 +4.1.16-r0 < 4.1.17-r0 +4.1.17-r0 < 4.2.0-r0 +4.2.0-r1 < 4.2.1-r0 +4.2.1-r2 < 4.2.3-r0 +4.2.3-r0 < 4.2.3-r1 +4.2.3-r1 < 4.2.3-r2 +4.2.3-r2 < 4.2.3-r3 +4.2.3-r3 < 4.2.7-r0 +4.2.7-r0 < 4.2.7-r2 +4.2.7-r2 < 4.2.7-r3 +4.2.7-r3 < 4.2.9-r0 +4.2.9-r0 < 4.2.9-r1 +4.2.9-r1 < 4.2.9-r2 +4.2.9-r2 < 4.2.9-r3 +4.2.9-r3 < 4.2.11-r2 +4.2.11-r2 < 4.2.11-r3 +4.2.11-r3 < 4.2.14-r3 +4.2.14-r3 < 4.4.2-r0 +4.4.2-r1 < 4.4.3-r0 +4.4.3-r0 < 4.4.4-r0 +4.4.4-r0 < 4.4.5-r0 +4.4.5-r0 < 4.4.5-r1 +4.4.5-r1 < 4.4.5-r2 +4.4.5-r2 < 4.4.5-r3 +4.4.5-r3 < 4.4.14-r0 +4.4.14-r0 < 4.4.14-r1 +4.4.14-r1 < 4.4.16-r1 +4.4.16-r1 < 4.5.1-r0 +4.5.1-r0 < 4.5.3-r0 +4.5.3-r0 < 4.5.3-r1 +4.5.3-r1 < 4.5.4-r0 +4.5.4-r0 < 4.5.7-r0 +4.5.7-r0 < 4.5.10-r0 +4.5.10-r0 < 4.5.10-r1 +4.5.10-r1 < 4.5.14-r1 +4.5.14-r1 < 4.5.15-r1 +4.5.15-r1 < 4.6.0-r0 +4.6.0-r0 < 4.6.1-r0 +4.6.1-r2 < 4.6.4-r0 +4.6.4-r0 < 4.6.4-r1 +4.6.4-r1 < 4.6.5-r0 +4.6.5-r0 < 4.6.6-r0 +4.6.6-r0 < 4.6.6-r1 +4.6.6-r1 < 4.6.8-r1 +4.6.8-r1 < 4.6.11-r1 +4.6.11-r1 < 4.6.14-r1 +4.6.14-r1 < 4.6.16-r1 +4.6.16-r1 < 4.7.0-r0 +4.7.0-r2 < 4.7.1-r0 +4.7.1-r0 < 4.7.1-r2 +4.7.1-r2 < 4.7.2-r0 +4.7.2-r0 < 4.7.2-r2 +4.7.2-r2 < 4.7.3-r0 +4.7.3-r0 < 4.7.3-r2 +4.7.3-r2 < 4.7.4-r0 +4.7.4-r0 < 4.7.4-r2 +4.7.4-r2 < 4.7.6-r0 +4.7.6-r0 < 4.7.6-r2 +4.7.6-r2 < 4.8.0-r0 +4.8.0-r0 < 4.8.1-r0 +4.8.1-r0 < 4.8.2-r0 +4.8.2-r1 < 4.8.4-r0 +4.8.4-r0 < 4.8.4-r1 +4.8.4-r1 < 4.8.5-r0 +4.8.5-r0 < 4.8.7-r0 +4.8.7-r0 < 4.8.8-r0 +4.8.8-r0 < 4.8.8-r1 +4.8.8-r1 < 4.8.11-r0 +4.8.11-r0 < 4.8.11-r1 +4.8.11-r1 < 4.8.12-r1 +4.8.12-r1 < 4.10.2-r0 +4.10.2-r0 < 4.10.3-r0 +4.10.3-r0 < 4.10.4-r0 +4.10.4-r0 < 4.10.4-r1 +4.10.4-r1 < 4.10.5-r0 +4.10.5-r0 < 4.10.5-r1 +4.10.5-r1 < 4.10.6-r0 +4.10.6-r0 < 4.10.8-r0 +4.10.8-r0 < 4.10.8-r1 +4.10.8-r1 < 4.10.10-r1 +4.10.10-r1 < 4.10.11-r1 +4.10.11-r1 < 4.10.12-r1 +4.10.12-r1 < 4.10.15-r1 +4.10.15-r1 < 4.10.17-r1 +4.10.17-r1 < 4.11.1-r0 +4.11.1-r0 < 4.11.2-r0 +4.11.2-r1 < 4.11.2-r2 +4.11.2-r2 < 4.11.3-r0 +4.11.3-r0 < 4.11.4-r0 +4.11.4-r0 < 4.11.4-r1 +4.11.4-r1 < 4.11.5-r0 +4.11.5-r0 < 4.11.5-r1 +4.11.5-r1 < 4.11.6-r0 +4.11.6-r0 < 4.11.8-r1 +4.11.8-r1 < 4.11.9-r1 +4.11.9-r1 < 4.11.14-r1 +4.11.14-r1 < 4.12.0-r0 +4.12.0-r0 < 4.12.1-r0 +4.12.1-r0 < 4.12.2-r0 +4.12.2-r1 < 4.12.2-r2 +4.12.2-r2 < 4.12.5-r0 +4.12.5-r0 < 4.12.5-r1 +4.12.5-r1 < 4.12.6-r0 +4.12.6-r0 < 4.12.6-r1 +4.12.6-r1 < 4.12.7-r0 +4.12.7-r0 < 4.12.7-r1 +4.12.7-r1 < 4.12.8-r0 +4.12.8-r0 < 4.12.8-r1 +4.12.8-r1 < 4.12.9-r0 +4.12.9-r0 < 4.12.9-r1 +4.12.9-r1 < 4.12.14-r1 +4.12.14-r1 < 4.13.2-r0 +4.13.2-r1 < 4.13.3-r0 +4.13.3-r2 < 4.13.5-r0 +4.13.5-r0 < 4.13.7-r1 +4.13.7-r1 < 4.13.8-r1 +4.13.8-r1 < 4.14.2-r0 +4.14.2-r1 < 4.14.4-r0 +4.14.4-r0 < 4.14.4-r1 +4.14.4-r1 < 4.14.5-r0 +4.14.5-r0 < 4.14.5-r1 +4.14.5-r1 < 4.14.6-r0 +4.14.6-r0 < 4.14.6-r1 +4.14.6-r1 < 4.14.8-r1 +4.14.8-r1 < 4.14.12-r1 +4.14.12-r1 < 4.15.0-r0 +4.15.0-r0 < 4.15.1-r0 +4.15.1-r1 < 4.15.2-r0 +4.15.2-r1 < 4.15.3-r0 +4.15.3-r1 < 4.15.5-r0 +4.15.5-r0 < 4.15.5-r1 +4.15.5-r1 < 4.15.6-r0 +4.15.6-r0 < 4.15.6-r1 +4.15.6-r1 < 4.15.7-r0 +4.15.7-r0 < 4.15.7-r1 +4.15.7-r1 < 4.15.9-r0 +4.15.9-r0 < 4.15.12-r1 +4.15.12-r1 < 4.16.4-r0 +4.16.4-r0 < 4.16.6-r0 +4.16.6-r0 < 4.16.7-r0 +4.16.7-r0 < 4.16.7-r1 +4.16.7-r1 < 4.16.8-r0 +4.16.8-r0 < 4.16.8-r1 +4.16.8-r1 < 4.17.4-r0 +4.17.4-r0 < 4.17.4-r1 +4.17.4-r1 < 4.17.5-r0 +4.17.5-r0 < 4.17.5-r1 +4.17.5-r1 < 4.18.0-r0 +4.18.0-r0 < 4.18.1-r0 +4.18.1-r0 < 4.18.1-r1 +4.18.1-r1 < 4.18.2-r0 +4.18.2-r0 < 4.18.2-r1 +4.18.2-r1 < 4.18.3-r0 +4.18.3-r0 < 4.18.3-r1 +4.18.3-r1 < 4.18.4-r0 +4.18.4-r0 < 4.18.4-r1 +4.18.4-r1 < 4.18.5-r0 +4.18.5-r0 < 4.18.5-r1 +4.18.5-r1 < 4.18.6-r1 +4.18.6-r1 < 4.18.7-r1 +4.18.7-r1 < 4.18.8-r1 +1.12.1-r1 < 1.12.1-r5 +1.12.1-r5 < 1.12.1-r6 +1.12.1-r6 < 1.13.0-r0 +1.13.0-r0 < 1.13.0-r1 +1.13.0-r1 < 1.13.0-r2 +1.13.0-r2 < 1.13.1-r0 +1.13.1-r0 < 1.13.2-r0 +1.13.2-r2 < 1.13.2-r3 +1.13.2-r3 < 1.13.2-r4 +1.13.2-r4 < 1.13.2-r5 +1.13.2-r5 < 1.13.3-r1 +1.13.3-r1 < 1.13.3-r2 +1.13.3-r2 < 1.13.3-r3 +1.13.3-r3 < 1.13.3-r4 +1.13.3-r4 < 1.13.3-r5 +1.13.3-r5 < 1.13.4-r0 +1.13.4-r0 < 1.13.4-r1 +1.13.4-r1 < 1.13.4-r2 +1.13.4-r2 < 1.14.1-r0 +1.14.1-r0 < 1.14.1-r1 +1.14.1-r1 < 1.14.1-r2 +1.14.1-r2 < 1.14.2-r0 +1.14.2-r0 < 1.14.2-r1 +1.14.2-r1 < 1.14.2-r2 +1.14.2-r2 < 1.14.3-r0 +1.14.3-r2 < 1.14.3-r3 +1.14.3-r3 < 1.14.3-r4 +1.14.3-r4 < 1.14.3-r5 +1.14.3-r5 < 1.14.3-r6 +1.14.3-r6 < 1.14.3-r7 +1.14.3-r7 < 1.14.4-r0 +1.14.4-r0 < 1.15.2-r0 +1.15.2-r1 < 1.15.3-r0 +1.15.3-r1 < 1.16.0-r0 +1.16.0-r0 < 1.16.0-r1 +1.16.0-r1 < 1.16.0-r2 +1.16.0-r2 < 1.16.0-r3 +1.16.0-r3 < 1.16.0-r4 +1.16.0-r4 < 1.16.0-r5 +1.16.0-r5 < 1.16.0-r6 +1.16.0-r6 < 1.16.0-r7 +1.16.0-r7 < 1.16.1-r0 +1.16.1-r0 < 1.16.1-r1 +1.16.1-r1 < 1.16.1-r2 +1.16.1-r2 < 1.16.1-r3 +1.16.1-r3 < 1.16.1-r4 +1.16.1-r4 < 1.16.2-r0 +1.16.2-r0 < 1.16.2-r1 +1.16.2-r1 < 1.16.2-r2 +1.16.2-r2 < 1.17.0-r0 +1.17.0-r0 < 1.17.0-r1 +1.17.0-r1 < 1.17.0-r2 +1.17.0-r2 < 1.17.0-r3 +1.17.0-r3 < 1.17.0-r4 +1.17.0-r4 < 1.17.1-r0 +1.17.1-r1 < 1.17.1-r2 +1.17.1-r2 < 1.17.1-r3 +1.17.1-r3 < 1.17.1-r4 +1.17.1-r4 < 1.17.2-r0 +1.17.2-r0 < 1.17.3-r0 +1.17.3-r0 < 1.17.3-r1 +1.17.3-r1 < 1.17.3-r2 +1.17.3-r2 < 1.17.3-r3 +1.17.3-r3 < 1.17.4-r0 +1.17.4-r0 < 1.17.4-r1 +1.17.4-r1 < 1.17.4-r2 +1.17.4-r2 < 1.18.2-r0 +1.18.2-r1 < 1.18.2-r2 +1.18.2-r2 < 1.18.3-r0 +1.18.3-r1 < 1.18.3-r2 +1.18.3-r2 < 1.18.3-r3 +1.18.3-r3 < 1.18.3-r4 +1.18.3-r4 < 1.18.4-r0 +1.18.4-r1 < 1.18.4-r2 +1.18.4-r2 < 1.18.4-r3 +1.18.4-r3 < 1.18.4-r4 +1.18.4-r4 < 1.18.5-r0 +1.18.5-r0 < 1.18.5-r1 +1.18.5-r1 < 1.19.0-r0 +1.19.0-r0 < 1.19.2-r0 +1.19.2-r3 < 1.19.3-r0 +1.19.3-r2 < 1.19.3-r3 +1.19.3-r3 < 1.19.3-r4 +1.19.3-r4 < 1.19.3-r5 +1.19.3-r5 < 1.19.3-r6 +1.19.3-r6 < 1.19.3-r7 +1.19.3-r7 < 1.19.3-r8 +1.19.3-r8 < 1.19.4-r0 +1.19.4-r0 < 1.19.4-r1 +1.19.4-r1 < 1.19.4-r2 +1.19.4-r2 < 1.19.4-r3 +1.19.4-r3 < 1.19.4-r4 +1.19.4-r4 < 1.20.0-r4 +1.20.0-r4 < 1.20.0-r5 +1.20.0-r5 < 1.20.0-r6 +1.20.0-r6 < 1.20.1-r0 +1.20.1-r0 < 1.20.1-r1 +1.20.1-r1 < 1.20.2-r0 +1.20.2-r0 < 1.20.2-r1 +1.20.2-r1 < 1.20.2-r2 +1.20.2-r2 < 1.20.2-r3 +1.20.2-r3 < 1.20.2-r4 +1.20.2-r4 < 1.20.2-r5 +1.20.2-r5 < 1.21.0-r0 +1.21.0-r0 < 1.21.1-r0 +1.21.1-r0 < 1.21.1-r1 +1.21.1-r1 < 1.21.1-r2 +1.21.1-r2 < 1.21.1-r3 +1.21.1-r3 < 1.22.0-r3 +1.22.0-r3 < 1.22.1-r0 +1.22.1-r0 < 1.22.1-r1 +1.22.1-r1 < 1.22.1-r2 +1.22.1-r2 < 1.22.1-r3 +1.22.1-r3 < 1.22.1-r4 +1.22.1-r4 < 1.22.1-r5 +1.22.1-r5 < 1.22.1-r6 +1.22.1-r6 < 1.22.1-r7 +1.22.1-r7 < 1.22.1-r8 +1.22.1-r8 < 1.22.1-r9 +1.22.1-r9 < 1.22.1-r10 +1.22.1-r10 < 1.22.1-r11 +1.22.1-r11 < 1.22.1-r12 +1.22.1-r12 < 1.22.1-r13 +1.22.1-r13 < 1.22.1-r14 +1.22.1-r14 < 1.23.0-r0 +1.23.0-r0 < 1.23.0-r1 +1.23.0-r1 < 1.23.0-r2 +1.23.0-r2 < 1.23.0-r3 +1.23.0-r3 < 1.23.0-r4 +1.23.0-r4 < 1.23.1-r0 +1.23.1-r0 < 1.23.1-r4 +1.23.1-r4 < 1.23.2-r0 +1.23.2-r0 < 1.23.2-r1 +1.23.2-r1 < 1.23.2-r2 +1.23.2-r2 < 1.23.2-r3 +1.23.2-r3 < 1.23.2-r4 +1.23.2-r4 < 1.23.2-r5 +1.23.2-r5 < 1.23.2-r6 +1.23.2-r6 < 1.23.2-r7 +1.23.2-r7 < 1.23.2-r8 +1.23.2-r8 < 1.23.2-r9 +1.23.2-r9 < 1.23.2-r10 +1.23.2-r10 < 1.24.1-r0 +1.24.1-r0 < 1.24.1-r1 +1.24.1-r1 < 1.24.1-r2 +1.24.1-r2 < 1.24.1-r3 +1.24.1-r3 < 1.24.1-r4 +1.24.1-r4 < 1.24.1-r5 +1.24.1-r5 < 1.24.1-r6 +1.24.1-r6 < 1.24.1-r7 +1.24.1-r7 < 1.24.1-r8 +1.24.1-r8 < 1.24.1-r9 +1.24.1-r9 < 1.24.2-r0 +1.24.2-r0 < 1.24.2-r1 +1.24.2-r1 < 1.24.2-r2 +1.24.2-r2 < 1.24.2-r3 +1.24.2-r3 < 1.24.2-r4 +1.24.2-r4 < 1.24.2-r5 +1.24.2-r5 < 1.24.2-r6 +1.24.2-r6 < 1.24.2-r7 +1.24.2-r7 < 1.24.2-r8 +1.24.2-r8 < 1.24.2-r9 +1.24.2-r9 < 1.24.2-r10 +1.24.2-r10 < 1.25.0-r0 +1.25.0-r0 < 1.25.0-r1 +1.25.0-r1 < 1.25.0-r2 +1.25.0-r2 < 1.25.0-r3 +1.25.0-r3 < 1.25.0-r4 +1.25.0-r4 < 1.25.0-r5 +1.25.0-r5 < 1.25.0-r6 +1.25.0-r6 < 1.25.1-r0 +1.25.1-r0 < 1.25.1-r1 +1.25.1-r1 < 1.26.0-r0 +1.26.0-r0 < 1.26.1-r0 +1.26.1-r0 < 1.26.1-r1 +1.26.1-r1 < 1.26.1-r2 +1.26.1-r2 < 1.26.1-r3 +1.26.1-r3 < 1.26.1-r4 +1.26.1-r4 < 1.26.2-r0 +1.26.2-r0 < 1.26.2-r1 +1.26.2-r1 < 1.26.2-r2 +1.26.2-r2 < 1.26.2-r3 +1.26.2-r3 < 1.26.2-r4 +1.26.2-r4 < 1.26.2-r5 +1.26.2-r5 < 1.26.2-r6 +1.26.2-r6 < 1.26.2-r7 +1.26.2-r7 < 1.26.2-r8 +1.26.2-r8 < 1.27.0-r0 +1.27.0-r0 < 1.27.0-r1 +1.27.0-r1 < 1.27.0-r2 +1.27.0-r2 < 1.27.0-r3 +1.27.0-r3 < 1.27.0-r4 +1.27.0-r4 < 1.27.1-r0 +1.27.1-r0 < 1.27.1-r4 +1.27.1-r4 < 1.27.2-r0 +1.27.2-r0 < 1.27.2-r1 +1.27.2-r1 < 1.27.2-r2 +1.27.2-r2 < 1.27.2-r3 +1.27.2-r3 < 1.27.2-r4 +1.27.2-r4 < 1.27.2-r5 +1.27.2-r5 < 1.27.2-r6 +1.27.2-r6 < 1.27.2-r7 +1.27.2-r7 < 1.27.2-r8 +1.27.2-r8 < 1.28.1-r0 +1.28.1-r0 < 1.28.1-r1 +1.28.1-r1 < 1.28.2-r0 +1.28.2-r0 < 1.28.2-r1 +1.28.2-r1 < 1.28.2-r2 +1.28.2-r2 < 1.28.2-r3 +1.28.2-r3 < 1.28.2-r4 +1.28.2-r4 < 1.28.2-r5 +1.28.2-r5 < 1.28.3-r0 +1.28.3-r0 < 1.28.3-r1 +1.28.3-r1 < 1.28.3-r2 +1.28.3-r2 < 1.28.4-r0 +1.28.4-r0 < 1.28.4-r1 +1.28.4-r1 < 1.28.4-r2 +1.28.4-r2 < 1.29.3-r0 +1.29.3-r0 < 1.29.3-r1 +1.29.3-r1 < 1.29.3-r2 +1.29.3-r2 < 1.29.3-r3 +1.29.3-r3 < 1.29.3-r4 +1.29.3-r4 < 1.29.3-r5 +1.29.3-r5 < 1.29.3-r6 +1.29.3-r6 < 1.29.3-r7 +1.29.3-r7 < 1.29.3-r8 +1.29.3-r8 < 1.29.3-r9 +1.29.3-r9 < 1.29.3-r10 +1.29.3-r10 < 1.29.3-r11 +1.29.3-r11 < 1.29.3-r12 +1.29.3-r12 < 1.30.0-r0 +1.30.0-r0 < 1.30.0-r12 +1.30.0-r12 < 1.30.1-r0 +1.30.1-r0 < 1.30.1-r1 +1.30.1-r1 < 1.30.1-r2 +1.30.1-r2 < 1.31.0-r0 +1.31.0-r0 < 1.31.0-r1 +1.31.0-r1 < 1.31.0-r2 +1.31.0-r2 < 1.31.1-r0 +1.31.1-r0 < 1.31.1-r1 +1.31.1-r1 < 1.31.1-r2 +1.31.1-r2 < 1.31.1-r3 +1.31.1-r3 < 1.31.1-r4 +1.31.1-r4 < 1.31.1-r5 +1.31.1-r5 < 1.31.1-r6 +1.31.1-r6 < 1.31.1-r7 +1.31.1-r7 < 1.31.1-r8 +1.31.1-r8 < 1.31.1-r9 +1.31.1-r9 < 1.31.1-r10 +1.31.1-r10 < 1.31.1-r11 +1.31.1-r11 < 1.31.1-r12 +1.31.1-r12 < 1.31.1-r13 +1.31.1-r13 < 1.31.1-r14 +1.31.1-r14 < 1.31.1-r15 +1.31.1-r15 < 1.31.1-r16 +1.31.1-r16 < 1.31.1-r17 +1.31.1-r17 < 1.31.1-r18 +1.31.1-r18 < 1.31.1-r19 +1.31.1-r19 < 1.31.1-r20 +1.31.1-r20 < 1.31.1-r21 +1.31.1-r21 < 1.32.0-r0 +1.32.0-r0 < 1.32.0-r1 +1.32.0-r1 < 1.32.0-r2 +1.32.0-r2 < 1.32.0-r3 +1.32.0-r3 < 1.32.0-r4 +1.32.0-r4 < 1.32.0-r5 +1.32.0-r5 < 1.32.0-r6 +1.32.0-r6 < 1.32.0-r7 +1.32.0-r7 < 1.32.0-r8 +1.32.0-r8 < 1.32.0-r9 +1.32.0-r9 < 1.32.1-r0 +1.32.1-r0 < 1.32.1-r1 +1.32.1-r1 < 1.32.1-r2 +1.32.1-r2 < 1.33.0-r0 +1.33.0-r0 < 1.33.0-r1 +1.33.0-r1 < 1.33.0-r2 +1.33.0-r2 < 1.33.0-r3 +1.33.0-r3 < 1.33.0-r4 +1.33.0-r4 < 1.33.0-r5 +1.33.0-r5 < 1.33.0-r6 +1.33.0-r6 < 1.33.0-r7 +1.33.0-r7 < 1.33.1-r0 +1.33.1-r0 < 1.33.1-r1 +1.33.1-r1 < 1.33.1-r2 +1.33.1-r2 < 1.33.1-r3 +1.33.1-r3 < 1.33.1-r4 +1.33.1-r4 < 1.33.1-r5 +1.33.1-r5 < 1.34.0-r0 +1.34.0-r0 < 1.34.0-r1 +1.34.0-r1 < 1.34.0-r2 +1.34.0-r2 < 1.34.0-r3 +1.34.0-r3 < 1.34.0-r4 +1.34.0-r4 < 1.34.0-r5 +1.34.0-r5 < 1.34.1-r0 +1.34.1-r0 < 1.34.1-r1 +1.34.1-r1 < 1.34.1-r2 +1.34.1-r2 < 1.34.1-r3 +1.34.1-r3 < 1.34.1-r4 +1.34.1-r4 < 1.34.1-r5 +1.34.1-r5 < 1.34.1-r6 +1.34.1-r6 < 1.35.0-r0 +1.35.0-r0 < 1.35.0-r1 +1.35.0-r1 < 1.35.0-r2 +1.35.0-r2 < 1.35.0-r3 +1.35.0-r3 < 1.35.0-r4 +1.35.0-r4 < 1.35.0-r5 +1.35.0-r5 < 1.35.0-r6 +1.35.0-r6 < 1.35.0-r7 +1.35.0-r7 < 1.35.0-r8 +1.35.0-r8 < 1.35.0-r9 +1.35.0-r9 < 1.35.0-r10 +1.35.0-r10 < 1.35.0-r11 +1.35.0-r11 < 1.35.0-r12 +1.35.0-r12 < 1.35.0-r13 +1.35.0-r13 < 1.35.0-r14 +1.35.0-r14 < 1.35.0-r15 +1.35.0-r15 < 1.35.0-r16 +1.35.0-r16 < 1.35.0-r17 +1.35.0-r17 < 1.35.0-r18 +1.35.0-r18 < 1.35.0-r19 +1.35.0-r19 < 1.35.0-r20 +1.35.0-r20 < 1.35.0-r21 +1.35.0-r21 < 1.35.0-r22 +1.35.0-r22 < 1.35.0-r23 +1.35.0-r23 < 1.35.0-r24 +1.35.0-r24 < 1.35.0-r25 +1.35.0-r25 < 1.35.0-r26 +1.35.0-r26 < 1.35.0-r27 +1.35.0-r27 < 1.35.0-r28 +1.35.0-r28 < 1.35.0-r29 +1.35.0-r29 < 1.35.0-r30 +1.35.0-r30 < 1.36.0-r0 +1.36.0-r0 < 1.36.0-r1 +1.36.0-r1 < 1.36.0-r2 +1.36.0-r2 < 1.36.0-r3 +1.36.0-r3 < 1.36.0-r4 +1.36.0-r4 < 1.36.0-r5 +1.36.0-r5 < 1.36.0-r6 +1.36.0-r6 < 1.36.0-r7 +1.36.0-r7 < 1.36.0-r8 +1.36.0-r8 < 1.36.0-r9 +9.6.0_p1-r0 < 9.6.0_p1-r1 +9.6.0_p1-r1 < 9.6.1_p1-r0 +9.6.1_p1-r0 < 9.6.1_p1-r1 +9.6.1_p1-r1 < 9.6.1_p2-r1 +9.6.1_p2-r1 < 9.6.1_p3-r1 +9.6.1_p3-r1 < 9.7.0_p1-r1 +9.7.0_p1-r1 < 9.7.1-r1 +9.7.1-r1 < 9.7.1_p2-r1 +9.7.1_p2-r1 < 9.7.2-r1 +9.7.2-r1 < 9.7.2_p1-r1 +9.7.2_p1-r1 < 9.7.2_p2-r1 +9.7.2_p2-r1 < 9.7.2_p3-r1 +9.7.2_p3-r1 < 9.7.3-r1 +9.7.3-r1 < 9.8.0-r1 +9.8.0-r1 < 9.8.0_p1-r1 +9.8.0_p1-r1 < 9.8.0_p2-r1 +9.8.0_p2-r1 < 9.8.0_p4-r1 +9.8.0_p4-r1 < 9.8.1-r1 +9.8.1-r1 < 9.8.1_p1-r1 +9.8.1_p1-r1 < 9.9.0-r1 +9.9.0-r1 < 9.9.1-r1 +9.9.1-r1 < 9.9.1_p1-r1 +9.9.1_p1-r1 < 9.9.1_p2-r1 +9.9.1_p2-r1 < 9.9.1_p3-r1 +9.9.1_p3-r1 < 9.9.2-r1 +9.9.2-r1 < 9.9.2_p1-r1 +9.9.2_p1-r1 < 9.9.2_p2-r1 +9.9.2_p2-r1 < 9.9.3-r1 +9.9.3-r1 < 9.9.3_p1-r1 +9.9.3_p1-r1 < 9.9.3_p2-r1 +9.9.3_p2-r1 < 9.9.4-r1 +9.9.4-r1 < 9.9.4_p1-r1 +9.9.4_p1-r1 < 9.9.4_p2-r1 +9.9.4_p2-r1 < 9.9.5-r1 +9.9.5-r1 < 9.10.0-r1 +9.10.0-r1 < 9.10.0_p1-r1 +9.10.0_p1-r1 < 9.10.0_p2-r1 +9.10.0_p2-r1 < 9.10.1-r1 +9.10.1-r1 < 9.10.1_p1-r1 +9.10.1_p1-r1 < 9.10.1_p2-r1 +9.10.1_p2-r1 < 9.10.2-r1 +9.10.2-r1 < 9.10.2_p1-r1 +9.10.2_p1-r1 < 9.10.2_p2-r1 +9.10.2_p2-r1 < 9.10.2_p3-r1 +9.10.2_p3-r1 < 9.10.2_p4-r1 +9.10.2_p4-r1 < 9.10.3-r1 +9.10.3-r1 < 9.10.3_p2-r1 +9.10.3_p2-r1 < 9.10.3_p3-r1 +9.10.3_p3-r1 < 9.10.3_p4-r1 +9.10.3_p4-r1 < 9.10.4-r1 +9.10.4-r1 < 9.10.4_p1-r1 +9.10.4_p1-r1 < 9.10.4_p2-r1 +9.10.4_p2-r1 < 9.10.4_p3-r1 +9.10.4_p3-r1 < 9.10.4_p4-r1 +9.10.4_p4-r1 < 9.10.4_p5-r1 +9.10.4_p5-r1 < 9.10.4_p6-r1 +9.10.4_p6-r1 < 9.10.4_p8-r1 +9.10.4_p8-r1 < 9.10.6_p1-r1 +9.10.6_p1-r1 < 9.11.0_p2-r1 +9.11.0_p2-r1 < 9.11.0_p3-r1 +9.11.0_p3-r1 < 9.11.0_p5-r1 +9.11.0_p5-r1 < 9.11.1-r1 +9.11.1-r1 < 9.11.1_p1-r1 +9.11.1_p1-r1 < 9.11.1_p2-r1 +9.11.1_p2-r1 < 9.11.2-r1 +9.11.2-r1 < 9.11.2_p1-r1 +9.11.2_p1-r1 < 9.11.3-r1 +9.11.3-r1 < 9.11.4_p1-r1 +9.11.4_p1-r1 < 9.11.5-r1 +9.11.5-r1 < 9.11.5_p4-r1 +9.11.5_p4-r1 < 9.11.6_p1-r1 +9.11.6_p1-r1 < 9.12.0-r1 +9.12.0-r1 < 9.12.1_p2-r1 +9.12.1_p2-r1 < 9.12.2_p1-r1 +9.12.2_p1-r1 < 9.12.3-r1 +9.12.3-r1 < 9.12.3_p1-r1 +9.12.3_p1-r1 < 9.12.3_p4-r1 +9.12.3_p4-r1 < 9.12.4_p1-r1 +9.12.4_p1-r1 < 9.14.0-r1 +9.14.0-r1 < 9.14.1-r1 +9.14.1-r1 < 9.14.3-r1 +9.14.3-r1 < 9.14.4-r1 +9.14.4-r1 < 9.14.7-r1 +9.14.7-r1 < 9.14.8-r1 +9.14.8-r1 < 9.14.12-r1 +9.14.12-r1 < 9.16.5-r1 +9.16.5-r1 < 9.16.6-r1 +9.16.6-r1 < 9.16.7-r1 +9.16.7-r1 < 9.16.8-r1 +9.16.8-r1 < 9.16.10-r1 +9.16.10-r1 < 9.16.11-r1 +9.16.11-r1 < 9.16.15-r1 +9.16.15-r1 < 9.16.16-r1 +9.16.16-r1 < 9.16.17-r1 +9.16.17-r1 < 9.16.18-r1 +9.16.18-r1 < 9.16.19-r1 +9.16.19-r1 < 9.16.20-r1 +9.16.20-r1 < 9.16.22-r1 +9.16.22-r1 < 9.16.24-r1 +9.16.24-r1 < 9.16.25-r1 +9.16.25-r1 < 9.16.27-r1 +9.16.27-r1 < 9.16.28-r1 +9.16.28-r1 < 9.16.29-r1 +9.16.29-r1 < 9.16.33-r1 +9.16.33-r1 < 9.16.36-r1 +9.16.36-r1 < 9.16.37-r1 +9.16.37-r1 < 9.16.39-r1 +9.16.39-r1 < 9.16.42-r1 +9.16.42-r1 < 9.16.44-r1 +9.16.44-r1 < 9.18.3-r1 +9.18.3-r1 < 9.18.4-r1 +9.18.4-r1 < 9.18.5-r1 +9.18.5-r1 < 9.18.7-r1 +9.18.7-r1 < 9.18.8-r1 +9.18.8-r1 < 9.18.9-r1 +9.18.9-r1 < 9.18.10-r1 +9.18.10-r1 < 9.18.11-r1 +9.18.11-r1 < 9.18.13-r1 +9.18.13-r1 < 9.18.14-r1 +9.18.14-r1 < 9.18.16-r1 +9.18.16-r1 < 9.18.17-r1 +9.18.17-r1 < 9.18.18-r1 +9.18.18-r1 < 9.18.19-r1 +0.8.7g-r0 < 0.8.7g-r1 +0.8.7g-r1 < 0.8.7g-r2 +0.8.7g-r2 < 0.8.7i-r0 +0.8.7i-r0 < 0.8.8a-r0 +0.8.8a-r0 < 0.8.8b-r0 +0.8.8b-r0 < 0.8.8b-r1 +0.8.8b-r1 < 0.8.8b-r2 +0.8.8b-r2 < 0.8.8b-r3 +0.8.8b-r3 < 0.8.8d-r0 +0.8.8d-r0 < 0.8.8e-r0 +0.8.8e-r0 < 0.8.8f-r0 +0.8.8f-r0 < 0.8.8f-r1 +0.8.8f-r1 < 0.8.8f-r2 +1.0.5-r0 < 1.0.5-r1 +1.0.5-r1 < 1.0.5-r2 +1.0.5-r2 < 1.0.6-r0 +1.0.6-r0 < 1.0.6-r1 +1.0.6-r1 < 1.0.6-r2 +1.0.6-r2 < 1.0.6-r3 +1.0.6-r3 < 1.0.6-r4 +1.0.6-r4 < 1.0.6-r5 +1.0.6-r5 < 1.0.6-r6 +2.7.2-r0 < 2.7.3-r0 +2.7.3-r0 < 2.7.6-r0 +2.7.6-r3 < 2.7.7-r0 +2.7.7-r4 < 2.7.8-r0 +2.7.8-r0 < 2.7.8-r1 +2.7.8-r1 < 2.7.8-r2 +2.7.8-r2 < 2.7.8-r4 +2.7.8-r4 < 2.7.8-r5 +2.7.8-r5 < 2.7.8-r6 +2.7.8-r6 < 2.7.8-r7 +2.7.8-r7 < 2.7.8-r8 +2.7.8-r8 < 2.8.0-r0 +2.8.0-r1 < 2.9.0-r0 +2.9.0-r0 < 2.9.0-r1 +2.9.0-r1 < 2.9.0-r2 +2.9.0-r2 < 2.9.0-r3 +2.9.0-r3 < 2.9.1-r0 +2.9.1-r2 < 2.9.2-r0 +2.9.2-r0 < 2.9.2-r1 +2.9.2-r1 < 2.9.2-r2 +2.9.2-r2 < 2.9.3-r0 +2.9.3-r0 < 2.9.3-r2 +2.9.3-r2 < 2.9.4-r0 +2.9.4-r0 < 2.9.4-r1 +2.9.4-r1 < 2.9.4-r2 +2.9.4-r2 < 2.9.4-r3 +2.9.4-r3 < 2.9.4-r4 +2.9.4-r4 < 2.9.5-r0 +2.9.5-r0 < 2.9.5-r3 +2.9.5-r3 < 2.9.5-r4 +2.9.5-r4 < 2.9.6-r0 +2.9.6-r0 < 2.9.6-r2 +2.9.6-r2 < 2.9.7-r0 +2.9.7-r0 < 2.9.7-r1 +2.9.7-r1 < 2.9.7-r2 +2.9.7-r2 < 2.9.8-r0 +2.9.8-r0 < 2.9.8-r1 +2.9.8-r1 < 2.9.8-r2 +2.9.8-r2 < 2.9.9-r0 +2.9.9-r0 < 2.9.9-r1 +2.9.9-r1 < 2.9.9-r2 +2.9.9-r2 < 2.9.9-r3 +2.9.9-r3 < 2.9.10-r0 +2.9.10-r0 < 2.9.10-r1 +2.9.10-r1 < 2.9.10-r2 +2.9.10-r2 < 2.9.10-r3 +2.9.10-r3 < 2.9.10-r4 +2.9.10-r4 < 2.9.10-r5 +2.9.10-r5 < 2.9.10-r6 +2.9.10-r6 < 2.9.10-r7 +2.9.10-r7 < 2.9.11-r7 +2.9.11-r7 < 2.9.12-r0 +2.9.12-r0 < 2.9.12-r1 +2.9.12-r1 < 2.9.12-r2 +2.9.12-r2 < 2.9.12-r3 +2.9.12-r3 < 2.9.12-r6 +2.9.12-r6 < 2.9.12-r7 +2.9.12-r7 < 2.9.13-r0 +2.9.13-r0 < 2.9.13-r1 +2.9.13-r1 < 2.9.13-r2 +2.9.13-r2 < 2.9.13-r3 +2.9.13-r3 < 2.9.13-r6 +2.9.13-r6 < 2.9.13-r7 +2.9.13-r7 < 2.9.14-r0 +2.9.14-r0 < 2.9.14-r1 +2.9.14-r1 < 2.10.0-r0 +2.10.0-r0 < 2.10.1-r0 +2.10.1-r0 < 2.10.2-r0 +2.10.2-r0 < 2.10.2-r1 +2.10.2-r1 < 2.10.3-r0 +2.10.3-r0 < 2.10.3-r1 +2.10.3-r1 < 2.10.3-r2 +2.11.0-r1 < 2.11.0-r2 +2.11.0-r2 < 2.11.0-r3 +2.11.0-r3 < 2.11.1-r0 +2.11.1-r0 < 2.11.2-r0 +2.11.2-r0 < 2.11.3-r0 +2.11.3-r0 < 2.11.3-r1 +2.11.3-r1 < 2.11.3-r2 +2.11.3-r2 < 2.11.4-r1 +2.11.4-r1 < 2.11.4-r2 +2.11.4-r2 < 2.11.5-r2 +2.11.5-r2 < 2.11.6-r1 +2.11.6-r1 < 2.11.6-r2 +1.4-r0 < 1.5-r0 +1.5-r0 < 1.5-r1 +1.5-r1 < 1.5-r2 +1.5-r2 < 1.5-r3 +1.5-r3 < 1.5-r4 +1.5-r4 < 1.5-r5 +1.5-r5 < 1.6_rc1-r0 +1.6_rc1-r0 < 1.6_rc1-r1 +1.6_rc1-r1 < 1.6_rc2-r1 +1.6_rc2-r1 < 1.6-r0 +1.6-r0 < 1.6-r1 +1.6-r1 < 1.6-r2 +1.6-r2 < 1.6-r3 +1.6-r3 < 1.7-r0 +1.7-r0 < 1.7-r1 +1.7-r1 < 1.7-r2 +4.1.6-r0 < 4.1.6-r1 +4.1.6-r1 < 4.1.6-r2 +4.1.6-r2 < 4.1.6-r3 +4.1.6-r3 < 4.1.6-r4 +4.1.6-r4 < 4.1.6-r5 +4.1.6-r5 < 4.1.6-r6 +4.1.6-r6 < 4.1.6-r7 +4.1.6-r7 < 4.2.1-r0 +4.2.1-r0 < 4.2.1-r7 +4.2.1-r7 < 5.0.4-r0 +5.0.4-r0 < 5.0.4-r7 +5.0.4-r7 < 5.0.5-r0 +5.0.5-r0 < 5.0.5-r7 +5.0.5-r7 < 5.0.6-r0 +5.0.6-r0 < 5.0.6-r7 +5.0.6-r7 < 5.1.0-r0 +5.1.0-r0 < 5.1.0-r7 +5.1.0-r7 < 5.1.1-r0 +5.1.1-r0 < 5.1.1-r7 +5.1.1-r7 < 5.1.2-r0 +5.1.2-r0 < 5.1.2-r7 +5.1.2-r7 < 5.1.4-r0 +5.1.4-r0 < 5.1.4-r1 +5.1.4-r1 < 5.1.4-r2 +5.1.4-r2 < 5.1.9-r0 +5.1.9-r0 < 5.1.9-r2 +5.1.9-r2 < 5.2.1-r0 +5.2.1-r0 < 5.2.1-r1 +5.2.1-r1 < 5.2.1-r2 +5.2.1-r2 < 5.2.1-r3 +5.2.1-r3 < 5.2.1-r4 +5.2.1-r4 < 5.2.1-r5 +0.5.11-r0 < 0.6.9-r0 +0.6.9-r0 < 0.6.9-r1 +0.6.9-r1 < 0.6.10-r0 +0.6.10-r0 < 0.7.1-r0 +0.7.1-r0 < 0.7.1-r1 +0.7.1-r1 < 0.7.1-r2 +0.7.1-r2 < 0.7.2-r0 +0.7.2-r0 < 0.7.2-r1 +0.7.2-r1 < 0.7.2-r2 +0.7.2-r2 < 0.7.3-r0 +0.7.3-r0 < 0.7.3-r1 +0.7.3-r1 < 0.7.3-r2 +0.7.3-r2 < 1.0-r0 +1.0-r2 < 1.1-r0 +1.1-r0 < 1.1-r1 +1.1-r1 < 2.0-r0 +2.0-r0 < 2.0-r1 +2.0-r1 < 2.0-r2 +2.0-r2 < 2.0-r3 +2.0-r3 < 2.1-r0 +2.1-r0 < 2.1-r1 +2.1-r1 < 2.1-r2 +2.1-r2 < 2.2-r0 +2.2-r0 < 2.3-r0 +2.3-r0 < 2.3-r1 +2.3-r1 < 2.4-r0 +2.4-r0 < 2.4-r1 +2.4-r1 < 2.4-r2 +2.4-r2 < 2.4-r3 +2.4-r3 < 2.4-r4 +2.4-r4 < 2.4-r5 +2.4-r5 < 2.4-r6 +2.4-r6 < 2.4-r7 +2.4-r7 < 2.4-r8 +2.4-r8 < 2.5-r0 +2.5-r0 < 2.5-r1 +2.5-r1 < 2.5-r2 +2.5-r2 < 2.5-r3 +2.5-r3 < 2.6-r0 +2.6-r4 < 2.6-r5 +2.6-r5 < 2.6-r6 +2.6-r6 < 2.6-r7 +2.6-r7 < 2.6-r8 +2.6-r8 < 2.6-r9 +2.6-r9 < 2.6-r10 +2.6-r10 < 2.6-r11 +2.6-r11 < 2.6-r12 +2.6-r12 < 2.6-r13 +2.6-r13 < 2.6-r14 +2.6-r14 < 2.6-r15 +2.6-r15 < 2.7-r0 +2.7-r1 < 2.7-r2 +2.7-r2 < 2.7-r3 +2.7-r3 < 2.8-r0 +2.8-r1 < 2.8-r3 +2.8-r3 < 2.9-r0 +2.9-r1 < 2.9-r2 +2.9-r2 < 2.9-r3 +2.9-r3 < 2.9-r4 +2.9-r4 < 2.9-r5 +2.9-r5 < 2.9-r6 +2.9-r6 < 2.9-r7 +2.9-r7 < 2.9-r8 +2.9-r8 < 2.9-r9 +2.9-r9 < 2.9-r10 +2.9-r10 < 2.9-r11 +2.9-r11 < 2.9-r12 +2.9-r12 < 2.9-r13 +2.9-r13 < 2.9-r14 +2.9-r14 < 2.9-r15 +2.9-r15 < 2.9-r16 +2.9-r16 < 2.9-r17 +6.4.9.10-r0 < 6.5.0.10-r0 +6.5.0.10-r0 < 6.5.2.1-r0 +6.5.2.1-r0 < 6.5.3.2-r0 +6.5.3.2-r0 < 6.5.3.10-r0 +6.5.3.10-r0 < 6.5.4.10-r0 +6.5.4.10-r0 < 6.5.5.6-r0 +6.5.5.6-r0 < 6.5.7.3-r0 +6.5.7.3-r0 < 6.5.7.5-r0 +6.5.7.5-r0 < 6.5.7.10-r0 +6.5.7.10-r0 < 6.5.8.5-r0 +6.5.8.5-r0 < 6.5.8.5-r1 +6.5.8.5-r1 < 6.5.9.0-r0 +6.5.9.0-r0 < 6.5.9.0-r1 +6.5.9.0-r1 < 6.5.9.0-r2 +6.5.9.0-r2 < 6.5.9.0-r3 +6.5.9.0-r3 < 6.5.9.0-r4 +6.5.9.0-r4 < 6.6.0.4-r0 +6.6.0.4-r0 < 6.6.0.10-r0 +6.6.0.10-r0 < 6.6.0.10-r1 +6.6.0.10-r1 < 6.6.1.5-r0 +6.6.1.5-r0 < 6.6.2.0-r0 +6.6.2.0-r0 < 6.6.2.10-r0 +6.6.2.10-r0 < 6.6.3.0-r0 +6.6.3.0-r0 < 6.6.3.1-r0 +6.6.3.1-r0 < 6.6.3.4-r0 +6.6.3.4-r0 < 6.6.3.6-r0 +6.6.3.6-r0 < 6.6.3.9-r0 +6.6.3.9-r0 < 6.6.3.10-r0 +6.6.3.10-r0 < 6.6.4.0-r0 +6.6.4.0-r0 < 6.6.4.1-r0 +6.6.4.1-r0 < 6.6.4.6-r0 +6.6.4.6-r0 < 6.6.4.10-r0 +6.6.4.10-r0 < 6.6.5.5-r0 +6.6.5.5-r0 < 6.6.5.10-r0 +6.6.5.10-r0 < 6.6.6.7-r0 +6.6.6.7-r0 < 6.6.7.0-r0 +6.6.7.0-r0 < 6.6.7.4-r0 +6.6.7.4-r0 < 6.6.7.9-r0 +6.6.7.9-r0 < 6.6.7.9-r1 +6.6.7.9-r1 < 6.6.8.4-r0 +6.6.8.4-r0 < 6.6.8.7-r0 +6.6.8.7-r0 < 6.6.9.1-r0 +6.6.9.1-r0 < 6.6.9.3-r0 +6.6.9.3-r0 < 6.6.9.8-r0 +6.6.9.8-r0 < 6.6.9.8-r1 +6.6.9.8-r1 < 6.6.9.8-r2 +6.6.9.8-r2 < 6.6.9.8-r3 +6.6.9.8-r3 < 6.6.9.9-r0 +6.6.9.9-r0 < 6.6.9.9-r1 +6.6.9.9-r1 < 6.7.0.0-r0 +6.7.0.0-r0 < 6.7.0.3-r0 +6.7.0.3-r0 < 6.7.0.4-r0 +6.7.0.4-r0 < 6.7.0.6-r0 +6.7.0.6-r0 < 6.7.0.8-r0 +6.7.0.8-r0 < 6.7.0.9-r0 +6.7.0.9-r0 < 6.7.1.0-r0 +6.7.1.0-r0 < 6.7.2.2-r0 +6.7.2.2-r0 < 6.7.2.7-r0 +6.7.2.7-r0 < 6.7.2.9-r0 +6.7.2.9-r0 < 6.7.3.2-r0 +6.7.3.2-r0 < 6.7.3.7-r0 +6.7.3.7-r0 < 6.7.3.9-r0 +6.7.3.9-r0 < 6.7.4.0-r0 +6.7.4.0-r0 < 6.7.4.4-r0 +6.7.4.4-r0 < 6.7.4.6-r0 +6.7.4.6-r0 < 6.7.4.7-r0 +6.7.4.7-r0 < 6.7.4.10-r0 +6.7.4.10-r0 < 6.7.5.6-r0 +6.7.5.6-r0 < 6.7.5.7-r0 +6.7.5.7-r0 < 6.7.6.0-r0 +6.7.6.0-r0 < 6.7.6.7-r0 +6.7.6.7-r0 < 6.7.7.2-r0 +6.7.7.2-r0 < 6.7.7.5-r0 +6.7.7.5-r0 < 6.7.7.6-r0 +6.7.7.6-r0 < 6.7.8.0-r0 +6.7.8.0-r0 < 6.7.8.3-r0 +6.7.8.3-r0 < 6.7.8.6-r0 +6.7.8.6-r0 < 6.7.8.7-r0 +6.7.8.7-r0 < 6.7.8.7-r1 +6.7.8.7-r1 < 6.7.8.8-r0 +6.7.8.8-r0 < 6.7.8.10-r0 +6.7.8.10-r0 < 6.7.9.3-r0 +6.7.9.3-r0 < 6.7.9.9-r0 +6.7.9.9-r0 < 6.8.0.4-r0 +6.8.0.4-r0 < 6.8.0.7-r0 +6.8.0.7-r0 < 6.8.2.4-r0 +6.8.2.4-r0 < 6.8.5.3-r0 +6.8.5.3-r0 < 6.8.5.6-r0 +6.8.5.6-r0 < 6.8.5.6-r1 +6.8.5.6-r1 < 6.8.6.2-r0 +6.8.6.2-r0 < 6.8.6.3-r0 +6.8.6.3-r0 < 6.8.6.4-r0 +6.8.6.4-r0 < 6.8.6.5-r0 +6.8.6.5-r0 < 6.8.6.5-r1 +6.8.6.5-r1 < 6.8.6.9-r0 +6.8.6.9-r0 < 6.8.6.10-r0 +6.8.6.10-r0 < 6.8.7.0-r0 +6.8.7.0-r0 < 6.8.7.1-r0 +6.8.7.1-r0 < 6.8.7.3-r0 +6.8.7.3-r0 < 6.8.7.5-r0 +6.8.7.5-r0 < 6.8.7.7-r0 +6.8.7.7-r0 < 6.8.7.8-r0 +6.8.7.8-r0 < 6.8.7.9-r0 +6.8.7.9-r0 < 6.8.7.10-r0 +6.8.7.10-r0 < 6.8.8.0-r0 +6.8.8.0-r0 < 6.8.8.4-r0 +6.8.8.4-r0 < 6.8.8.4-r1 +6.8.8.4-r1 < 6.8.8.7-r1 +6.8.8.7-r1 < 6.8.8.9-r0 +6.8.8.9-r0 < 6.8.8.10-r0 +6.8.8.10-r0 < 6.8.9.1-r0 +6.8.9.1-r0 < 6.8.9.5-r0 +6.8.9.5-r0 < 6.8.9.10-r0 +6.8.9.10-r0 < 6.9.0.0-r0 +6.9.0.0-r0 < 6.9.1.0-r0 +6.9.1.0-r0 < 6.9.1.2-r0 +6.9.1.2-r0 < 6.9.1.4-r0 +6.9.1.4-r0 < 6.9.1.4-r1 +6.9.1.4-r1 < 6.9.1.4-r2 +6.9.1.4-r2 < 6.9.1.4-r3 +6.9.1.4-r3 < 6.9.2.0-r0 +6.9.2.0-r0 < 6.9.2.3-r0 +6.9.2.3-r0 < 6.9.2.5-r0 +6.9.2.5-r0 < 6.9.2.6-r0 +6.9.2.6-r0 < 6.9.2.7-r0 +6.9.2.7-r0 < 6.9.2.8-r0 +6.9.2.8-r0 < 6.9.2.8-r1 +6.9.2.8-r1 < 6.9.3.2-r0 +6.9.3.2-r0 < 6.9.3.5-r0 +6.9.3.5-r0 < 6.9.3.6-r0 +6.9.3.6-r0 < 6.9.3.7-r0 +6.9.3.7-r0 < 6.9.3.7-r1 +6.9.3.7-r1 < 6.9.3.8-r0 +6.9.3.8-r0 < 6.9.3.10-r0 +6.9.3.10-r0 < 6.9.4.0-r0 +6.9.4.0-r0 < 6.9.4.1-r0 +6.9.4.1-r0 < 6.9.5.0-r0 +6.9.5.0-r0 < 6.9.5.2-r0 +6.9.5.2-r0 < 6.9.5.5-r0 +6.9.5.5-r0 < 6.9.5.9-r0 +6.9.5.9-r0 < 6.9.5.10-r0 +6.9.5.10-r0 < 6.9.6.5-r0 +6.9.6.5-r0 < 6.9.6.6-r0 +6.9.6.6-r0 < 6.9.6.6-r1 +6.9.6.6-r1 < 6.9.6.8-r0 +6.9.6.8-r0 < 6.9.6.8-r1 +6.9.6.8-r1 < 6.9.6.8-r2 +6.9.6.8-r2 < 7.0.5.2-r0 +7.0.5.2-r0 < 7.0.5.3-r0 +7.0.5.3-r0 < 7.0.5.4-r0 +7.0.5.4-r0 < 7.0.5.5-r0 +7.0.5.5-r0 < 7.0.5.9-r0 +7.0.5.9-r0 < 7.0.5.10-r0 +7.0.5.10-r0 < 7.0.7.3-r1 +7.0.7.3-r1 < 7.0.7.4-r0 +7.0.7.4-r0 < 7.0.7.5-r0 +7.0.7.5-r0 < 7.0.7.8-r0 +7.0.7.8-r0 < 7.0.7.10-r0 +7.0.7.10-r0 < 7.0.7.11-r0 +7.0.7.11-r0 < 7.0.7.11-r1 +7.0.7.11-r1 < 7.0.7.13-r0 +7.0.7.13-r0 < 7.0.7.16-r0 +7.0.7.16-r0 < 7.0.7.17-r0 +7.0.7.17-r0 < 7.0.7.18-r0 +7.0.7.18-r0 < 7.0.7.21-r0 +7.0.7.21-r0 < 7.0.7.22-r0 +7.0.7.22-r0 < 7.0.7.23-r0 +7.0.7.23-r0 < 7.0.7.24-r0 +7.0.7.24-r0 < 7.0.7.25-r0 +7.0.7.25-r0 < 7.0.7.26-r0 +7.0.7.26-r0 < 7.0.7.27-r0 +7.0.7.27-r0 < 7.0.7.28-r0 +7.0.7.28-r0 < 7.0.7.28-r1 +7.0.7.28-r1 < 7.0.7.32-r0 +7.0.7.32-r0 < 7.0.7.39-r0 +7.0.7.39-r0 < 7.0.8.2-r0 +7.0.8.2-r0 < 7.0.8.5-r0 +7.0.8.5-r0 < 7.0.8.8-r0 +7.0.8.8-r0 < 7.0.8.11-r0 +7.0.8.11-r0 < 7.0.8.17-r0 +7.0.8.17-r0 < 7.0.8.19-r0 +7.0.8.19-r0 < 7.0.8.20-r0 +7.0.8.20-r0 < 7.0.8.23-r0 +7.0.8.23-r0 < 7.0.8.24-r0 +7.0.8.24-r0 < 7.0.8.26-r0 +7.0.8.26-r0 < 7.0.8.38-r0 +1.11.4-r0 < 1.11.4-r1 +1.11.4-r1 < 1.12-r0 +1.12-r0 < 1.12-r1 +1.12-r1 < 1.12-r2 +1.12-r2 < 1.12-r3 +1.12-r3 < 1.12-r4 +1.12-r4 < 1.13-r0 +1.13-r0 < 1.13.1-r0 +1.13.1-r1 < 1.13.3-r0 +1.13.3-r0 < 1.13.4-r0 +1.13.4-r0 < 1.14-r0 +1.14-r1 < 1.15-r0 +1.15-r0 < 1.15-r1 +1.15-r1 < 1.16-r0 +1.16-r1 < 1.16.1-r0 +1.16.1-r1 < 1.16.2-r0 +1.16.2-r1 < 1.16.3-r0 +1.16.3-r0 < 1.16.3-r1 +1.16.3-r1 < 1.17-r0 +1.18-r1 < 1.19-r0 +1.19-r0 < 1.19.1-r0 +1.19.1-r0 < 1.19.1-r1 +1.19.1-r1 < 1.19.1-r2 +1.19.1-r2 < 1.19.2-r0 +1.19.2-r2 < 1.19.4-r0 +1.19.4-r2 < 1.19.5-r0 +1.19.5-r0 < 1.19.5-r1 +1.19.5-r1 < 1.19.5-r2 +1.19.5-r2 < 1.20-r0 +1.20-r0 < 1.20-r1 +1.20-r1 < 1.20.1-r0 +1.7.0-r1 < 1.7.3-r0 +1.7.3-r0 < 1.7.4-r0 +1.7.4-r0 < 1.7.4-r1 +1.7.4-r1 < 1.7.4-r2 +1.7.4-r2 < 1.7.5-r0 +1.7.5-r0 < 1.8.0-r0 +1.8.0-r0 < 1.9.0-r0 +1.9.0-r0 < 1.9.1-r0 +1.9.1-r0 < 1.10.0-r0 +1.10.0-r1 < 1.11.0-r0 +1.11.0-r0 < 1.11.0-r1 +1.11.0-r1 < 1.12.0-r0 +1.12.0-r0 < 1.13.0-r0 +1.13.0-r1 < 1.14.0-r0 +1.14.0-r0 < 1.14.0-r1 +1.14.0-r1 < 1.15.0-r0 +1.15.0-r0 < 1.15.0-r1 +1.15.0-r1 < 1.16.0-r0 +1.16.0-r1 < 1.16.1-r0 +1.16.1-r1 < 1.17.1-r0 +1.17.1-r1 < 1.17.2-r0 +1.17.2-r0 < 1.17.2-r1 +1.17.2-r1 < 1.18.1-r0 +1.18.1-r1 < 1.19.0-r0 +1.19.0-r0 < 1.19.0-r1 +1.19.0-r1 < 1.19.0-r2 +1.19.0-r2 < 1.19.0-r3 +1.19.0-r3 < 1.19.0-r4 +1.19.0-r4 < 1.19.1-r0 +1.19.1-r1 < 1.20.1-r0 +1.20.1-r0 < 1.21.0-r0 +1.21.0-r0 < 1.22.0-r0 +1.22.0-r0 < 1.22.1-r0 +1.22.1-r0 < 1.24.0-r0 +1.24.0-r0 < 1.24.0-r1 +0.10.25-r0 < 0.10.26-r0 +0.10.26-r0 < 0.10.28-r0 +0.10.28-r0 < 0.10.29-r0 +0.10.29-r0 < 0.10.29-r1 +0.10.29-r1 < 0.10.30-r1 +0.10.30-r1 < 0.10.31-r0 +0.10.31-r0 < 0.10.33-r0 +0.10.33-r0 < 0.10.33-r1 +0.10.33-r1 < 0.10.36-r0 +0.10.36-r0 < 0.12.2-r0 +0.12.2-r0 < 0.12.6-r0 +0.12.6-r0 < 0.12.7-r0 +0.12.7-r0 < 4.0.0-r0 +4.0.0-r0 < 4.1.0-r0 +4.1.0-r0 < 4.1.1-r0 +4.1.2-r0 < 4.2.1-r0 +4.2.1-r0 < 4.2.3-r0 +4.2.3-r0 < 4.2.4-r0 +4.2.4-r0 < 4.2.4-r1 +4.2.4-r1 < 4.2.5-r0 +4.2.5-r0 < 4.2.6-r0 +4.2.6-r0 < 4.2.6-r1 +4.2.6-r1 < 4.3.0-r0 +4.3.0-r0 < 4.3.1-r0 +4.3.1-r1 < 4.4.0-r1 +4.4.0-r1 < 4.4.1-r1 +4.4.1-r1 < 4.4.2-r1 +4.4.3-r0 < 4.4.3-r1 +4.4.3-r1 < 4.4.4-r0 +4.4.5-r0 < 4.4.7-r0 +4.4.7-r0 < 4.5.0-r0 +4.5.0-r0 < 5.10.1-r1 +5.10.1-r1 < 5.11.0-r1 +5.11.0-r1 < 6.2.0-r1 +6.2.0-r1 < 6.9.1-r0 +6.9.1-r0 < 6.9.1-r1 +6.9.1-r1 < 6.9.2-r0 +6.9.2-r0 < 6.9.2-r1 +6.9.2-r1 < 6.9.4-r0 +6.9.4-r0 < 6.9.4-r1 +6.9.4-r1 < 6.9.5-r0 +6.9.5-r0 < 6.9.5-r1 +6.9.5-r1 < 6.10.0-r0 +6.10.0-r0 < 6.10.0-r1 +6.10.0-r1 < 6.10.1-r0 +6.10.1-r0 < 6.10.1-r1 +6.10.1-r1 < 6.10.3-r0 +6.10.3-r0 < 6.11.0-r0 +6.11.0-r0 < 6.11.1-r0 +6.11.1-r0 < 6.11.1-r1 +6.11.1-r1 < 6.11.1-r2 +6.11.1-r2 < 6.11.2-r0 +6.11.2-r0 < 6.11.2-r2 +6.11.2-r2 < 6.11.3-r0 +6.11.3-r0 < 6.11.3-r2 +6.11.3-r2 < 6.11.4-r0 +6.11.4-r0 < 6.11.4-r2 +6.11.4-r2 < 6.11.5-r0 +6.11.5-r0 < 6.11.5-r2 +6.11.5-r2 < 8.9.0-r0 +8.9.0-r0 < 8.9.0-r2 +8.9.0-r2 < 8.9.1-r0 +8.9.1-r0 < 8.9.1-r2 +8.9.1-r2 < 8.9.2-r0 +8.9.2-r0 < 8.9.2-r2 +8.9.2-r2 < 8.9.3-r0 +8.9.3-r0 < 8.9.3-r1 +8.9.3-r1 < 8.9.4-r0 +8.9.4-r0 < 8.10.0-r0 +8.10.0-r0 < 8.11.0-r0 +8.11.0-r0 < 8.11.0-r1 +8.11.0-r1 < 8.11.1-r0 +8.11.1-r0 < 8.11.1-r1 +8.11.1-r1 < 8.11.1-r2 +8.11.1-r2 < 8.11.2-r0 +8.11.2-r0 < 8.11.3-r0 +8.11.3-r0 < 8.11.3-r1 +8.11.3-r1 < 8.11.3-r2 +8.11.3-r2 < 8.11.3-r3 +8.11.3-r3 < 8.11.4-r0 +8.11.4-r0 < 8.11.4-r1 +8.11.4-r1 < 8.11.4-r3 +8.11.4-r3 < 8.12.0-r0 +8.12.0-r0 < 8.12.0-r3 +8.12.0-r3 < 10.13.0-r0 +10.13.0-r0 < 10.13.0-r3 +10.13.0-r3 < 10.14.0-r0 +10.14.0-r0 < 10.14.0-r3 +10.14.0-r3 < 10.14.1-r0 +10.14.1-r0 < 10.14.1-r3 +10.14.1-r3 < 10.14.2-r0 +10.14.2-r0 < 10.14.2-r3 +10.14.2-r3 < 10.15.1-r0 +10.15.1-r0 < 10.15.1-r3 +10.15.1-r3 < 10.15.3-r0 +10.15.3-r0 < 10.15.3-r3 +10.15.3-r3 < 10.16.0-r0 +10.16.0-r0 < 10.16.0-r3 +10.16.0-r3 < 10.16.1-r0 +10.16.1-r0 < 10.16.2-r0 +10.16.2-r0 < 10.16.3-r0 +10.16.3-r0 < 10.16.3-r3 +10.16.3-r3 < 10.19.0-r3 +10.19.0-r3 < 10.24.0-r3 +10.24.0-r3 < 12.13.0-r0 +12.13.0-r0 < 12.13.0-r1 +12.13.0-r1 < 12.13.1-r0 +12.13.1-r0 < 12.14.0-r0 +12.14.0-r0 < 12.14.1-r0 +12.14.1-r0 < 12.15.0-r0 +12.15.0-r0 < 12.15.0-r1 +12.15.0-r1 < 12.15.0-r2 +12.15.0-r2 < 12.16.2-r0 +12.16.2-r0 < 12.16.3-r0 +12.16.3-r0 < 12.16.3-r1 +12.16.3-r1 < 12.17.0-r0 +12.17.0-r0 < 12.17.0-r1 +12.17.0-r1 < 12.18.0-r0 +12.18.0-r0 < 12.18.0-r1 +12.18.0-r1 < 12.18.0-r2 +12.18.0-r2 < 12.18.2-r0 +12.18.2-r0 < 12.18.3-r0 +12.18.3-r0 < 12.18.3-r1 +12.18.3-r1 < 12.18.4-r0 +12.18.4-r0 < 12.18.4-r1 +12.18.4-r1 < 12.19.0-r0 +12.19.0-r0 < 12.19.0-r1 +12.19.0-r1 < 12.20.1-r1 +12.20.1-r1 < 12.21.0-r1 +12.21.0-r1 < 12.22.1-r1 +12.22.1-r1 < 12.22.2-r1 +12.22.2-r1 < 12.22.4-r1 +12.22.4-r1 < 12.22.5-r1 +12.22.5-r1 < 12.22.6-r1 +12.22.6-r1 < 14.15.1-r0 +14.15.1-r0 < 14.15.3-r0 +14.15.3-r0 < 14.15.3-r1 +14.15.3-r1 < 14.15.3-r2 +14.15.3-r2 < 14.15.4-r0 +14.15.4-r0 < 14.15.5-r0 +14.15.5-r0 < 14.16.0-r0 +14.16.0-r0 < 14.16.0-r1 +14.16.0-r1 < 14.16.1-r0 +14.16.1-r0 < 14.16.1-r1 +14.16.1-r1 < 14.16.1-r2 +14.16.1-r2 < 14.17.0-r0 +14.17.0-r0 < 14.17.0-r2 +14.17.0-r2 < 14.17.1-r0 +14.17.1-r0 < 14.17.1-r2 +14.17.1-r2 < 14.17.2-r0 +14.17.2-r0 < 14.17.3-r0 +14.17.3-r0 < 14.17.3-r1 +14.17.3-r1 < 14.17.3-r2 +14.17.3-r2 < 14.17.4-r0 +14.17.4-r0 < 14.17.4-r1 +14.17.4-r1 < 14.17.4-r2 +14.17.4-r2 < 14.17.5-r0 +14.17.5-r0 < 14.17.5-r1 +14.17.5-r1 < 14.17.5-r2 +14.17.5-r2 < 14.17.6-r0 +14.17.6-r0 < 14.17.6-r1 +14.17.6-r1 < 14.17.6-r2 +14.17.6-r2 < 14.18.0-r0 +14.18.0-r0 < 14.18.1-r0 +14.18.1-r0 < 14.18.1-r1 +14.18.1-r1 < 14.18.1-r2 +14.18.1-r2 < 14.19.0-r1 +14.19.0-r1 < 14.19.0-r2 +14.19.0-r2 < 14.20.0-r1 +14.20.0-r1 < 14.20.0-r2 +14.20.0-r2 < 14.20.1-r2 +14.20.1-r2 < 16.13.0-r0 +16.13.0-r0 < 16.13.0-r1 +16.13.0-r1 < 16.13.1-r0 +16.13.1-r0 < 16.13.1-r1 +16.13.1-r1 < 16.13.2-r0 +16.13.2-r0 < 16.13.2-r1 +16.13.2-r1 < 16.14.0-r1 +16.14.0-r1 < 16.14.2-r0 +16.14.2-r0 < 16.14.2-r1 +16.14.2-r1 < 16.15.0-r0 +16.15.0-r0 < 16.15.0-r1 +16.15.0-r1 < 16.16.0-r0 +16.16.0-r0 < 16.16.0-r1 +16.16.0-r1 < 16.17.0-r0 +16.17.0-r0 < 16.17.1-r0 +16.17.1-r0 < 16.17.1-r1 +16.17.1-r1 < 16.18.0-r0 +16.18.0-r0 < 16.18.0-r1 +16.18.0-r1 < 16.19.1-r1 +16.19.1-r1 < 16.20.0-r1 +16.20.0-r1 < 16.20.1-r1 +16.20.1-r1 < 18.12.0-r0 +18.12.0-r0 < 18.12.0-r1 +18.12.0-r1 < 18.12.1-r0 +18.12.1-r0 < 18.12.1-r1 +18.12.1-r1 < 18.13.0-r0 +18.13.0-r0 < 18.14.0-r0 +18.14.0-r0 < 18.14.1-r0 +18.14.1-r0 < 18.14.1-r1 +18.14.1-r1 < 18.14.2-r0 +18.14.2-r0 < 18.14.2-r1 +18.14.2-r1 < 18.15.0-r0 +18.15.0-r0 < 18.15.0-r1 +18.15.0-r1 < 18.16.0-r0 +18.16.0-r0 < 18.16.0-r1 +18.16.0-r1 < 18.16.1-r0 +18.16.1-r0 < 18.16.1-r1 +18.16.1-r1 < 18.17.0-r0 +18.17.0-r0 < 18.17.0-r1 +18.17.0-r1 < 18.17.1-r0 +18.17.1-r0 < 18.17.1-r1 +18.17.1-r1 < 18.18.0-r0 +18.18.0-r0 < 18.18.1-r0 +18.18.1-r0 < 18.18.2-r0 +18.18.2-r0 < 18.18.2-r1 +18.18.2-r1 < 18.19.1-r1 +18.19.1-r1 < 20.9.0-r0 +20.9.0-r0 < 20.10.0-r0 +20.10.0-r0 < 20.10.0-r1 +20.10.0-r1 < 20.11.0-r1 +20.11.0-r1 < 20.11.1-r1 +1.0.5-r2 < 1.0.5-r3 +1.0.5-r3 < 1.0.5-r4 +1.0.5-r4 < 1.0.6-r0 +1.0.6-r1 < 1.0.7-r0 +1.0.7-r0 < 1.0.7-r1 +1.0.7-r1 < 1.0.8-r1 +1.0.8-r1 < 1.0.9-r1 +1.0.9-r1 < 1.0.10-r1 +1.0.0-r0 < 1.0.1-r0 +1.0.1-r0 < 1.0.2-r0 +1.0.4-r0 < 1.0.5-r0 +1.0.9-r0 < 1.0.10-r0 +1.4.4-r0 < 1.4.4-r1 +1.4.4-r1 < 1.4.4-r2 +1.4.4-r2 < 1.5.2-r0 +1.5.2-r0 < 1.5.2-r2 +1.5.2-r2 < 1.6.1-r0 +1.6.1-r0 < 1.6.1-r2 +1.6.1-r2 < 1.6.3-r0 +1.6.3-r0 < 1.6.3-r2 +1.6.3-r2 < 1.8.0-r0 +1.8.0-r0 < 1.8.0-r2 +1.8.0-r2 < 1.8.1-r0 +4.9.1-r3 < 4.10.1-r0 +4.10.1-r0 < 4.10.2-r0 +4.10.3-r1 < 4.10.3-r2 +4.10.3-r2 < 5.0.0-r0 +5.0.0-r0 < 5.0.0-r1 +5.0.0-r1 < 5.0.0-r2 +5.0.0-r2 < 5.0.0-r3 +5.0.0-r3 < 5.0.1-r0 +5.0.1-r0 < 5.0.1-r1 +5.0.1-r1 < 5.0.2-r0 +5.0.2-r0 < 5.0.3-r0 +5.0.3-r0 < 5.1.0-r0 +5.1.0-r0 < 5.1.0-r1 +5.1.0-r1 < 5.1.0-r2 +5.1.0-r2 < 5.1.0-r3 +5.1.0-r3 < 5.2.0-r0 +5.2.0-r0 < 5.2.1-r0 +5.2.1-r0 < 5.3.0-r0 +5.3.0-r1 < 5.4.0-r0 +5.4.0-r0 < 5.4.0-r1 +5.4.0-r1 < 5.4.0-r2 +5.4.0-r2 < 5.4.1-r0 +5.4.1-r0 < 5.4.1-r1 +5.4.1-r1 < 5.4.1-r2 +5.4.1-r2 < 5.4.1-r3 +5.4.1-r3 < 5.4.1-r4 +5.4.1-r4 < 5.4.1-r5 +5.4.1-r5 < 5.4.2-r0 +5.4.2-r0 < 5.5.0-r0 +5.5.0-r0 < 5.5.0-r1 +5.5.0-r1 < 5.5.1-r0 +5.5.1-r0 < 5.5.1-r1 +5.5.1-r1 < 5.5.2-r0 +5.5.2-r0 < 5.5.2-r1 +5.5.2-r1 < 5.6.1-r0 +5.6.1-r2 < 5.6.1-r3 +4.1.3-r0 < 4.2.0.1-r0 +4.2.0.1-r0 < 4.2.1-r0 +4.2.1-r0 < 4.4-r0 +4.4-r1 < 4.4-r2 +4.4-r2 < 4.4.1-r0 +4.4.1-r3 < 4.4.2-r0 +4.4.2-r1 < 4.6-r0 +4.6-r0 < 4.6.1-r0 +4.6.1-r0 < 4.8-r0 +4.8-r0 < 4.8.1-r0 +4.8.1-r0 < 4.8.1.1-r0 +4.8.1.1-r0 < 4.8.1.1-r1 +4.8.1.1-r1 < 49.1.1-r0 +49.1.1-r0 < 49.1.2-r0 +49.1.2-r0 < 49.1.2-r1 +49.1.2-r1 < 50.1-r1 +50.1-r1 < 50.1.1-r1 +50.1.1-r1 < 50.1.2-r1 +50.1.2-r1 < 51.1-r0 +51.1-r0 < 51.2-r0 +51.2-r0 < 51.2-r1 +51.2-r1 < 52.1-r0 +52.1-r0 < 53.1-r0 +53.1-r0 < 54.1-r0 +54.1-r0 < 55.1-r0 +55.1-r0 < 55.1-r1 +55.1-r1 < 55.1-r2 +55.1-r2 < 56.1-r0 +56.1-r0 < 57.1-r0 +57.1-r0 < 57.1-r1 +57.1-r1 < 58.1-r1 +58.1-r1 < 58.2-r0 +58.2-r0 < 58.2-r1 +58.2-r1 < 58.2-r2 +58.2-r2 < 59.1-r0 +59.1-r0 < 59.1-r1 +59.1-r1 < 60.2-r0 +60.2-r0 < 60.2-r1 +60.2-r1 < 60.2-r2 +60.2-r2 < 60.2-r3 +60.2-r3 < 62.1-r0 +62.1-r0 < 63.1-r0 +63.1-r0 < 64.2-r0 +64.2-r0 < 65.1-r0 +65.1-r0 < 65.1-r1 +1.4.4-r1 < 1.4.5-r0 +1.4.5-r0 < 1.4.5-r1 +1.4.5-r1 < 1.4.5-r2 +1.4.5-r2 < 1.4.6-r0 +1.4.6-r0 < 1.4.6-r1 +1.4.6-r1 < 1.4.6-r2 +1.4.6-r2 < 1.5.0-r0 +1.5.0-r0 < 1.5.1-r0 +1.5.1-r0 < 1.5.2-r0 +1.5.2-r0 < 1.5.3-r0 +1.5.3-r0 < 1.6.0-r0 +1.6.0-r0 < 1.6.1-r0 +1.6.1-r0 < 1.6.1-r1 +1.6.1-r1 < 1.6.2-r0 +1.6.2-r0 < 1.6.2-r1 +1.6.2-r1 < 1.6.3-r0 +1.6.3-r0 < 1.6.3-r1 +1.6.3-r1 < 1.6.4-r0 +1.6.4-r0 < 1.6.4-r1 +1.6.4-r1 < 1.6.5-r0 +1.6.5-r0 < 1.6.5-r1 +1.6.5-r1 < 1.7.0-r0 +1.7.1-r0 < 1.7.1-r1 +1.7.1-r1 < 1.7.2-r0 +1.7.2-r0 < 1.7.2-r1 +1.7.2-r1 < 1.7.3-r0 +1.7.3-r0 < 1.7.3-r1 +1.7.3-r1 < 1.7.5-r0 +1.7.5-r0 < 1.7.5-r1 +1.7.5-r1 < 1.7.6-r0 +1.7.6-r0 < 1.7.6-r1 +1.7.6-r1 < 1.7.7-r0 +1.7.7-r0 < 1.7.7-r1 +1.7.7-r1 < 1.7.8-r0 +1.7.8-r0 < 1.7.8-r1 +1.7.8-r1 < 1.7.9-r1 +1.7.9-r1 < 1.8.0-r0 +1.8.0-r1 < 1.8.1-r0 +1.8.1-r1 < 1.8.2-r0 +1.8.2-r1 < 1.8.3-r0 +1.8.3-r0 < 1.8.4-r0 +1.8.4-r2 < 1.8.5-r0 +1.8.5-r0 < 1.8.5-r2 +1.8.5-r2 < 1.8.6-r0 +1.8.6-r0 < 1.8.6-r2 +1.8.6-r2 < 1.8.7-r0 +1.8.7-r0 < 1.8.7-r2 +1.8.7-r2 < 1.9.1-r0 +1.9.1-r0 < 1.9.1-r1 +1.9.1-r1 < 1.9.2-r0 +1.9.2-r0 < 1.9.2-r1 +1.9.2-r1 < 1.9.3-r0 +1.9.3-r0 < 1.9.3-r1 +2.8.13-r0 < 2.8.13-r1 +2.8.13-r1 < 2.8.16-r0 +2.8.16-r0 < 2.8.16-r1 +2.8.16-r1 < 2.8.16-r2 +2.8.16-r2 < 2.8.18-r0 +2.8.18-r0 < 2.8.18-r2 +2.8.18-r2 < 2.8.22-r0 +2.8.22-r0 < 2.8.22-r2 +2.8.22-r2 < 2.9.0-r0 +2.9.0-r0 < 2.9.0-r2 +2.9.0-r2 < 2.9.1-r0 +2.9.1-r0 < 2.9.1-r2 +2.9.1-r2 < 2.9.4-r0 +2.9.4-r0 < 2.9.4-r2 +2.9.4-r2 < 2.9.6-r0 +1.21-r0 < 1.22-r0 +1.22-r1 < 1.23-r0 +1.23-r0 < 1.23-r1 +1.23-r1 < 1.24-r0 +1.25-r0 < 1.26-r0 +1.26-r0 < 1.26-r1 +1.26-r1 < 1.27-r0 +1.27-r0 < 1.27.1-r0 +1.27.1-r0 < 1.28-r0 +1.30-r1 < 1.31-r0 +1.31-r0 < 1.31-r1 +1.32-r1 < 1.33-r0 +1.33-r0 < 1.33-r1 +1.33-r1 < 1.34-r1 +1.2.4-r0 < 1.2.6-r0 +1.2.6-r0 < 1.2.6-r1 +1.2.6-r1 < 1.2.6-r2 +1.2.6-r2 < 1.2.8-r0 +1.2.9-r0 < 1.2.10-r0 +1.2.10-r0 < 1.4.0-r0 +1.4.5-r0 < 1.4.6-r0 +1.4.6-r0 < 1.4.7-r0 +1.4.7-r0 < 1.6.0-r0 +1.6.1-r0 < 1.6.2-r0 +1.6.2-r0 < 1.6.3-r0 +1.6.3-r0 < 1.6.4-r0 +1.6.4-r0 < 1.6.5-r0 +1.6.5-r0 < 1.6.6-r0 +1.6.6-r0 < 1.6.6-r1 +1.6.6-r1 < 1.6.8-r0 +1.6.8-r0 < 1.6.8-r1 +1.6.8-r1 < 1.8.1-r0 +1.8.1-r0 < 1.8.2-r0 +1.8.2-r0 < 1.8.3-r0 +1.8.4-r0 < 1.8.5-r0 +1.8.5-r0 < 1.8.6-r0 +1.8.6-r0 < 1.8.7-r0 +1.8.7-r0 < 1.10.0-r0 +1.10.0-r0 < 1.10.1-r0 +1.10.1-r0 < 1.10.2-r0 +1.10.2-r0 < 1.10.2-r1 +1.10.2-r1 < 1.10.3-r0 +1.10.3-r0 < 1.10.3-r1 +1.10.3-r1 < 1.10.4-r0 +1.10.4-r0 < 1.10.5-r0 +1.10.5-r0 < 1.10.5-r1 +1.10.5-r1 < 1.10.6-r0 +1.10.6-r0 < 1.10.7-r0 +1.10.7-r0 < 1.10.8-r0 +1.10.8-r0 < 1.12.0-r0 +1.12.0-r0 < 1.12.0-r1 +1.12.0-r1 < 1.12.1-r0 +1.12.1-r0 < 1.12.1-r1 +1.12.1-r1 < 1.12.2-r0 +1.12.2-r0 < 1.12.3-r0 +1.12.3-r0 < 1.12.4-r0 +1.12.4-r0 < 1.12.4-r1 +1.12.4-r1 < 1.12.5-r0 +1.12.5-r0 < 1.12.7-r0 +1.12.7-r0 < 1.12.8-r0 +1.12.8-r0 < 2.0.0-r0 +2.0.0-r0 < 2.0.1-r0 +2.0.1-r0 < 2.0.2-r0 +2.0.2-r0 < 2.0.3-r0 +2.0.3-r0 < 2.0.4-r0 +2.0.4-r0 < 2.0.5-r0 +2.0.5-r0 < 2.2.0-r0 +2.2.0-r1 < 2.2.2-r0 +2.2.4-r1 < 2.2.5-r1 +2.2.5-r1 < 2.2.6-r1 +2.2.6-r1 < 2.2.7-r1 +2.2.7-r1 < 2.2.8-r1 +2.2.8-r1 < 2.2.10-r1 +2.2.10-r1 < 2.2.11-r1 +2.2.11-r1 < 2.2.12-r1 +2.2.12-r1 < 2.2.14-r1 +2.5.35-r1 < 2.5.35-r2 +2.5.35-r2 < 2.5.35-r3 +2.5.35-r3 < 2.5.35-r4 +2.5.35-r4 < 2.5.36-r0 +2.5.36-r0 < 2.5.36-r4 +2.5.36-r4 < 2.5.37-r0 +2.5.37-r0 < 2.5.37-r4 +2.5.37-r4 < 2.5.38-r0 +2.5.38-r0 < 2.5.38-r4 +2.5.38-r4 < 2.5.39-r0 +2.5.39-r0 < 2.5.39-r1 +2.5.39-r1 < 2.5.39-r2 +2.5.39-r2 < 2.6.0-r2 +3.3.10-r0 < 3.3.10-r1 +3.3.10-r1 < 3.3.10-r2 +3.3.10-r2 < 3.4.9-r0 +3.4.9-r0 < 3.4.11.1-r0 +3.4.11.1-r0 < 4.0.0-r0 +4.0.0-r0 < 4.0.1-r0 +4.0.2-r0 < 4.0.3-r0 +4.0.3-r0 < 4.0.4.1-r0 +4.0.4.1-r0 < 4.0.4.2-r0 +4.0.4.2-r0 < 4.0.5-r0 +4.0.5-r0 < 4.0.6-r0 +4.0.6-r0 < 4.0.7-r0 +4.0.7-r0 < 4.0.8-r0 +4.0.9-r0 < 4.0.9-r2 +4.0.10-r0 < 4.0.10-r2 +4.0.10-r2 < 4.1.4-r0 +4.1.4-r0 < 4.1.4-r2 +4.1.4-r2 < 4.1.5-r0 +4.1.5-r0 < 4.1.5-r2 +4.1.5-r2 < 4.1.6-r0 +4.1.6-r0 < 4.1.6-r2 +4.1.6-r2 < 4.1.7-r0 +4.1.7-r0 < 4.1.7-r2 +4.1.7-r2 < 4.1.8-r0 +4.1.8-r0 < 4.1.8-r2 +4.1.8-r2 < 4.1.9-r0 +4.1.9-r0 < 4.1.9-r2 +4.1.9-r2 < 4.1.11-r0 +4.1.11-r0 < 4.1.11-r2 +4.1.11-r2 < 4.1.12-r0 +4.1.12-r0 < 4.1.12-r2 +4.1.12-r2 < 4.1.13-r0 +4.1.13-r0 < 4.1.13-r2 +4.1.13-r2 < 4.1.14-r0 +4.1.14-r0 < 4.1.14-r2 +4.1.14-r2 < 4.2.0-r0 +4.2.0-r0 < 4.2.0-r2 +4.2.0-r2 < 4.2.1-r0 +4.2.1-r0 < 4.2.1-r2 +4.2.1-r2 < 4.2.2-r0 +4.2.2-r2 < 4.2.3-r0 +4.2.3-r0 < 4.2.3-r2 +4.2.3-r2 < 4.2.4-r0 +4.2.4-r0 < 4.2.4-r2 +4.2.4-r2 < 4.2.5-r0 +4.2.5-r0 < 4.2.5-r2 +4.2.5-r2 < 4.2.6-r0 +4.2.6-r0 < 4.2.6-r2 +4.2.6-r2 < 4.2.7-r0 +4.2.7-r2 < 4.2.7.1-r0 +4.2.7.1-r0 < 4.2.7.1-r2 +4.2.7.1-r2 < 4.2.8-r0 +4.2.8-r0 < 4.2.8-r2 +4.2.8-r2 < 4.2.8.1-r0 +4.2.8.1-r0 < 4.2.8.1-r2 +4.2.8.1-r2 < 4.2.9-r0 +4.2.9-r0 < 4.2.9-r2 +4.2.9-r2 < 4.2.9.1-r0 +4.2.9.1-r0 < 4.2.9.1-r2 +4.2.9.1-r2 < 4.2.10-r0 +4.2.10-r0 < 4.2.10-r2 +4.2.10-r2 < 4.2.10.1-r0 +4.2.10.1-r0 < 4.2.10.1-r2 +4.2.10.1-r2 < 4.2.11-r0 +4.2.11-r0 < 4.2.11-r2 +4.2.11-r2 < 4.2.12-r0 +4.2.12-r0 < 4.2.12-r2 +4.2.12-r2 < 4.2.13.1-r0 +4.2.13.1-r0 < 4.2.13.1-r2 +4.2.13.1-r2 < 4.3.0-r0 +4.3.0-r0 < 4.3.0-r2 +4.3.0-r2 < 4.3.1-r0 +4.3.1-r0 < 4.3.1-r2 +4.3.1-r2 < 4.3.3-r0 +4.3.3-r0 < 4.3.3-r2 +4.3.3-r2 < 4.3.4-r0 +4.3.4-r0 < 4.3.4-r2 +4.3.4-r2 < 4.3.5-r0 +4.3.5-r0 < 4.3.5-r2 +4.3.5-r2 < 4.3.7-r0 +4.3.7-r0 < 4.3.7-r2 +4.3.7-r2 < 4.3.8-r0 +4.3.8-r0 < 4.3.8-r2 +4.3.8-r2 < 4.3.9-r0 +4.3.9-r0 < 4.3.9-r2 +4.3.9-r2 < 4.3.10-r0 +4.3.10-r0 < 4.3.10-r2 +4.3.10-r2 < 4.3.11.1-r0 +4.3.11.1-r0 < 4.3.11.1-r2 +4.3.11.1-r2 < 4.3.12-r0 +4.3.12-r0 < 4.3.12-r2 +4.3.12-r2 < 4.3.13-r0 +4.3.13-r0 < 4.3.13-r2 +4.3.13-r2 < 4.4.1.1-r0 +4.4.1.1-r0 < 4.4.1.1-r2 +4.4.1.1-r2 < 4.4.3-r0 +4.4.3-r0 < 4.4.3-r2 +4.4.3-r2 < 4.4.4-r0 +4.4.4-r0 < 4.4.4-r2 +4.4.4-r2 < 4.4.5-r0 +4.4.5-r0 < 4.4.5-r2 +4.4.5-r2 < 4.4.7-r0 +4.4.7-r0 < 4.4.7-r2 +4.4.7-r2 < 4.4.9-r0 +4.4.9-r0 < 4.4.10-r0 +4.4.10-r0 < 4.4.12-r0 +4.4.12-r0 < 4.4.15-r0 +4.4.15-r0 < 4.4.15-r2 +4.4.15-r2 < 4.4.15.1-r2 +4.4.15.1-r2 < 4.4.15.4-r2 +4.4.15.4-r2 < 4.4.15.7-r2 +4.4.15.7-r2 < 4.4.15.8-r2 +4.4.15.8-r2 < 4.5.0.2-r0 +4.5.0.2-r0 < 4.5.1-r0 +4.5.1-r0 < 4.5.4-r0 +4.5.4-r0 < 4.5.4.1-r0 +4.5.4.1-r0 < 4.5.5-r0 +4.5.5-r0 < 4.5.5.1-r0 +4.5.5.1-r0 < 4.6.0-r0 +4.6.0-r1 < 4.6.1-r1 +4.6.1-r1 < 4.6.2-r1 +4.6.2-r1 < 4.6.3-r1 +4.6.3-r1 < 4.6.4-r1 +0.8.12-r0 < 0.8.13_rc1-r0 +0.8.13_rc1-r0 < 0.8.13-r0 +0.8.13-r0 < 0.8.14-r0 +0.8.14-r0 < 0.8.14-r1 +0.8.14-r1 < 0.8.14-r2 +0.8.14-r2 < 0.8.15-r0 +0.8.15-r0 < 0.8.15-r1 +0.8.15-r1 < 0.8.15-r2 +0.8.15-r2 < 0.8.15-r3 +0.8.15-r3 < 0.8.15-r4 +0.8.15-r4 < 0.8.15-r5 +0.8.15-r5 < 0.8.15-r6 +0.8.15-r6 < 0.8.15-r7 +0.8.15-r7 < 0.8.15-r8 +0.8.15-r8 < 0.8.15-r9 +0.8.15-r9 < 0.8.15-r10 +0.8.15-r10 < 0.8.15-r11 +0.8.15-r11 < 0.8.15-r12 +0.8.15-r12 < 0.8.15-r13 +0.8.15-r13 < 0.8.15-r14 +0.8.15-r14 < 0.8.16_rc1-r0 +0.8.16_rc1-r0 < 0.8.16-r0 +0.8.16-r0 < 0.8.16-r1 +0.8.16-r1 < 0.8.17-r0 +0.8.17-r0 < 0.8.17-r1 +0.8.17-r1 < 0.8.17-r2 +0.8.17-r2 < 0.8.17-r3 +0.8.17-r3 < 0.8.17-r4 +0.8.17-r4 < 0.8.18-r0 +0.8.18-r0 < 0.8.18-r4 +0.8.18-r4 < 0.8.19-r0 +0.8.19-r0 < 0.8.19-r1 +0.8.19-r1 < 0.8.19-r4 +0.8.19-r4 < 0.8.20-r0 +0.8.20-r0 < 0.8.20-r1 +0.8.20-r1 < 0.8.20-r4 +0.8.20-r4 < 0.8.21-r1 +0.8.21-r1 < 1.0.0-r0 +1.0.2-r0 < 1.0.2-r1 +1.0.2-r1 < 1.0.3-r0 +1.0.3-r0 < 1.0.3-r1 +1.0.3-r1 < 1.0.4-r0 +1.0.5-r1 < 1.0.6-r0 +1.0.6-r1 < 1.1.1-r0 +1.1.1-r0 < 1.1.1-r1 +1.1.1-r1 < 1.1.1-r2 +1.1.1-r2 < 1.1.2-r0 +1.1.2-r0 < 1.1.2-r1 +1.1.2-r2 < 1.2.0-r0 +1.2.0-r1 < 1.2.1-r0 +5.6.10-r0 < 5.6.10-r1 +5.6.10-r1 < 5.6.11-r0 +5.6.13-r0 < 5.6.13-r1 +5.6.13-r1 < 5.6.14-r0 +5.6.14-r0 < 5.6.14-r1 +5.6.14-r1 < 5.6.15-r0 +5.6.15-r3 < 5.6.16-r3 +5.6.16-r3 < 5.6.17-r1 +5.6.17-r1 < 5.6.17-r3 +5.6.17-r3 < 5.6.20-r1 +5.6.20-r1 < 5.6.20-r3 +5.6.20-r3 < 5.6.21-r1 +5.6.21-r1 < 5.6.21-r3 +5.6.21-r3 < 5.6.24-r1 +5.6.24-r1 < 5.6.24-r3 +5.6.24-r3 < 5.6.25-r1 +5.6.25-r1 < 5.6.25-r3 +2.6.5-r0 < 2.6.6-r0 +2.6.6-r0 < 2.8.1-r0 +2.8.1-r1 < 2.8.3-r0 +2.8.3-r0 < 2.8.5-r0 +2.8.5-r1 < 2.8.6-r0 +2.8.6-r0 < 2.8.6-r1 +2.8.6-r1 < 2.8.6-r2 +2.8.6-r2 < 2.8.6-r3 +2.8.6-r3 < 2.10.4-r0 +2.10.4-r0 < 2.10.5-r0 +2.10.5-r0 < 2.10.5-r1 +2.10.5-r1 < 2.10.5-r2 +2.10.5-r2 < 2.12.6.1-r0 +2.12.6.1-r0 < 2.12.7-r0 +2.12.7-r0 < 2.12.16-r0 +2.12.16-r0 < 3.0.17-r0 +3.0.17-r0 < 3.0.18-r0 +3.0.18-r0 < 3.0.19-r0 +3.0.19-r0 < 3.0.20-r0 +3.0.20-r0 < 3.0.21-r0 +3.0.21-r0 < 3.0.22-r0 +3.0.22-r0 < 3.1.0-r0 +3.1.0-r0 < 3.1.1-r0 +3.1.4-r0 < 3.1.5-r0 +3.1.5-r0 < 3.1.5-r1 +3.1.5-r1 < 3.1.6-r1 +3.1.6-r1 < 3.1.7-r1 +3.1.7-r1 < 3.1.8-r1 +3.1.8-r1 < 3.1.9-r0 +3.1.9-r0 < 3.1.10-r0 +3.1.10-r0 < 3.1.11-r0 +3.1.11-r0 < 3.2.1-r0 +3.2.1-r1 < 3.2.2-r1 +3.2.2-r1 < 3.2.3-r0 +3.2.7-r0 < 3.2.8-r0 +3.2.8-r0 < 3.2.9-r0 +3.2.9-r0 < 3.2.10-r0 +3.2.12-r0 < 3.2.12.1-r0 +3.2.12.1-r0 < 3.3.1-r0 +3.3.1-r0 < 3.3.2-r0 +3.3.2-r0 < 3.3.4-r0 +3.3.7-r1 < 3.3.8-r0 +3.3.8-r0 < 3.3.9-r0 +3.3.9-r0 < 3.3.9-r1 +3.3.9-r1 < 3.3.10-r0 +3.3.10-r1 < 3.3.11-r0 +3.3.11-r1 < 3.3.12-r0 +3.3.12-r0 < 3.3.12-r1 +3.3.12-r1 < 3.3.13-r0 +3.3.13-r0 < 3.3.13-r1 +3.3.13-r1 < 3.3.14-r0 +3.3.14-r0 < 3.3.14-r1 +3.3.14-r1 < 3.4.0-r0 +3.4.0-r1 < 3.4.1-r0 +3.4.1-r1 < 3.4.2-r0 +3.4.2-r1 < 3.4.3-r0 +3.4.3-r1 < 3.4.4.1-r0 +3.4.4.1-r0 < 3.4.4.1-r1 +3.4.4.1-r1 < 3.4.5-r0 +3.4.5-r1 < 3.4.6-r0 +3.4.7-r1 < 3.4.8-r0 +3.4.8-r0 < 3.4.8-r1 +3.4.8-r1 < 3.4.9-r0 +3.4.9-r0 < 3.4.9-r1 +3.4.9-r1 < 3.4.10-r0 +3.4.11-r1 < 3.4.13-r0 +3.4.13-r0 < 3.4.14-r0 +3.4.14-r0 < 3.4.14-r1 +3.4.14-r1 < 3.4.15-r0 +3.4.15-r0 < 3.4.15-r1 +3.4.15-r1 < 3.4.16-r0 +3.4.16-r0 < 3.4.16-r1 +3.4.16-r1 < 3.4.17-r0 +3.4.17-r0 < 3.4.17-r1 +3.4.17-r1 < 3.5.8-r0 +3.5.8-r1 < 3.5.9-r0 +3.5.10-r0 < 3.5.10-r1 +3.5.10-r1 < 3.5.11-r0 +3.5.13-r1 < 3.5.15-r0 +3.5.15-r0 < 3.6.0-r0 +3.6.1-r0 < 3.6.2-r0 +3.6.2-r0 < 3.6.4-r0 +3.6.4-r0 < 3.6.5-r0 +3.6.10-r0 < 3.6.10-r1 +3.6.10-r1 < 3.6.11.1-r0 +3.6.11.1-r0 < 3.6.11.1-r1 +3.6.11.1-r1 < 3.6.12-r0 +3.6.13-r1 < 3.6.13-r2 +3.6.13-r2 < 3.6.14-r0 +3.6.14-r0 < 3.6.14-r1 +3.6.14-r1 < 3.6.15-r0 +3.6.15-r0 < 3.6.15-r1 +3.6.15-r1 < 3.7.0-r0 +3.7.0-r0 < 3.7.0-r1 +3.7.0-r1 < 3.7.1-r0 +3.7.1-r0 < 3.7.1-r1 +3.7.1-r1 < 3.7.3-r0 +3.7.3-r0 < 3.7.3-r1 +3.7.3-r1 < 3.7.4-r0 +3.7.4-r0 < 3.7.4-r1 +3.7.4-r1 < 3.7.5-r0 +3.7.5-r0 < 3.7.5-r1 +3.7.5-r1 < 3.7.6-r0 +3.7.6-r0 < 3.7.6-r1 +3.7.6-r1 < 3.7.7-r0 +3.7.7-r0 < 3.7.7-r1 +3.7.7-r1 < 3.7.8-r0 +3.7.8-r0 < 3.7.8-r1 +3.7.8-r1 < 3.7.8-r2 +3.7.8-r2 < 3.8.0-r0 +3.8.0-r0 < 3.8.0-r1 +3.8.0-r1 < 3.8.0-r2 +3.8.0-r2 < 3.8.0-r3 +3.8.0-r3 < 3.8.0-r4 +3.8.0-r4 < 3.8.1-r2 +3.8.1-r2 < 3.8.1-r4 +3.8.1-r4 < 3.8.3-r2 +3.8.3-r2 < 3.8.3-r4 +4.0.0-r1 < 4.0.0-r2 +4.0.0-r2 < 4.1.1-r0 +4.1.1-r2 < 4.2.1-r0 +4.2.1-r2 < 4.3.0-r0 +4.4.0-r0 < 4.4.0-r2 +4.4.0-r2 < 4.5.1-r0 +4.5.1-r0 < 4.5.1-r2 +4.5.1-r2 < 4.6.1-r0 +4.6.1-r0 < 4.6.1-r2 +4.6.1-r2 < 4.6.2-r0 +4.6.2-r0 < 4.6.2-r2 +4.6.2-r2 < 4.7.3-r0 +4.7.4-r0 < 4.7.4-r1 +4.7.4-r1 < 4.7.4-r2 +4.7.4-r2 < 4.9.0-r0 +4.9.0-r2 < 4.9.1-r0 +4.9.1-r0 < 4.9.2-r0 +4.9.2-r3 < 4.9.2-r4 +4.9.2-r4 < 4.9.3-r0 +1.1.99.2-r0 < 1.1.99.2-r1 +1.1.99.2-r1 < 1.2-r0 +1.2-r0 < 1.2.1-r0 +1.2.2-r0 < 1.3-r0 +1.3-r0 < 1.3.2-r0 +1.3.2-r0 < 1.3.3-r0 +1.3.3-r0 < 1.3.3-r1 +1.3.3-r1 < 1.3.4-r0 +1.3.4-r0 < 1.3.5-r0 +1.3.5-r0 < 1.3.6-r0 +1.3.6-r0 < 1.4.0-r0 +1.4.1-r0 < 1.4.1-r1 +1.4.1-r1 < 1.4.2-r0 +1.4.3-r1 < 1.4.3-r2 +1.4.3-r2 < 1.4.3-r3 +1.4.3-r3 < 1.4.4-r0 +1.4.4-r0 < 1.4.99.1-r0 +1.4.99.1-r0 < 1.4.99.901-r0 +1.4.99.901-r0 < 1.5.0-r0 +1.5.0-r0 < 1.5.99.902-r0 +1.5.99.902-r0 < 1.6.0-r0 +1.6.3-r1 < 1.6.3-r2 +1.6.3-r2 < 1.6.4-r0 +1.6.4-r0 < 1.6.4-r2 +1.6.4-r2 < 1.6.5-r0 +1.6.5-r1 < 1.6.5-r2 +1.6.5-r2 < 1.6.6-r0 +1.6.6-r0 < 1.6.6-r2 +1.6.6-r2 < 1.6.7-r0 +1.6.7-r0 < 1.6.7-r2 +1.6.7-r2 < 1.6.8-r0 +1.6.8-r1 < 1.6.9-r0 +1.6.9-r0 < 1.6.9-r1 +1.6.9-r1 < 1.6.10-r0 +1.6.10-r0 < 1.6.10-r1 +1.6.10-r1 < 1.6.10-r2 +1.6.10-r2 < 1.6.11-r0 +1.6.11-r0 < 1.6.11-r1 +1.6.11-r1 < 1.6.12-r0 +1.6.12-r0 < 1.6.12-r1 +1.6.12-r1 < 1.7.0-r0 +1.7.3-r1 < 1.7.3.1-r0 +1.7.3.1-r0 < 1.7.5-r0 +1.7.5-r0 < 1.8-r0 +1.8-r0 < 1.8-r1 +1.8-r1 < 1.8.1-r0 +1.8.2-r2 < 1.8.3-r0 +1.8.3-r1 < 1.8.4-r0 +1.8.4-r3 < 1.8.4-r4 +1.8.4-r4 < 1.8.5-r0 +1.8.5-r1 < 1.8.5-r2 +1.8.5-r2 < 1.8.6-r2 +1.2.1-r0 < 1.3-r0 +1.3-r0 < 1.3-r1 +1.3-r1 < 1.3-r2 +1.3-r2 < 1.3-r3 +1.3-r3 < 1.3-r4 +1.3-r4 < 1.3.2-r0 +1.3.2-r0 < 1.4.0-r0 +1.4.5-r0 < 1.6.0-r0 +1.6.2-r0 < 1.7-r0 +1.7-r0 < 1.7.1-r0 +1.7.1-r1 < 1.7.2-r1 +1.7.2-r1 < 1.7.3-r1 +1.3.0-r0 < 1.3.0-r1 +1.3.0-r1 < 1.3.0-r2 +1.3.0-r2 < 1.3.0-r3 +1.3.0-r3 < 1.3.0-r4 +1.3.0-r4 < 1.3.1-r0 +1.3.1-r0 < 1.3.1-r1 +1.3.1-r1 < 1.3.1-r2 +1.3.1-r2 < 1.3.2-r0 +1.4.0-r1 < 1.4.1-r1 +1.4.1-r1 < 1.4.2-r1 +1.0.3-r0 < 1.1.0-r0 +1.1.0-r2 < 1.1.0-r3 +1.1.0-r3 < 1.2.0-r0 +1.0.6-r2 < 1.0.7-r0 +4.0.3-r0 < 4.0.4-r0 +4.0.4-r0 < 4.0.4-r1 +4.0.4-r1 < 4.0.5-r0 +4.0.5-r1 < 5.0-r0 +5.0-r0 < 5.0-r1 +5.0-r1 < 5.0-r2 +0.9.11-r0 < 0.9.11-r1 +0.9.11-r1 < 0.9.12-r0 +0.9.12-r0 < 0.9.12-r1 +0.9.12-r1 < 0.9.13-r0 +0.9.13-r0 < 0.10.0-r0 +0.10.0-r0 < 0.10.1-r0 +0.10.1-r0 < 0.10.1-r1 +0.10.1-r1 < 0.10.2-r0 +0.10.2-r0 < 0.10.2-r1 +0.10.2-r1 < 0.11.1-r0 +0.11.1-r0 < 0.11.2-r0 +0.11.2-r0 < 0.12.0-r0 +0.12.0-r0 < 0.12.1-r0 +0.12.1-r0 < 0.12.2-r0 +0.12.2-r0 < 0.12.3-r0 +0.12.3-r0 < 0.12.3-r1 +0.12.3-r1 < 0.13.0-r0 +0.13.0-r1 < 0.13.2-r0 +0.13.2-r0 < 0.13.2-r1 +0.13.2-r1 < 0.13.3-r0 +0.13.3-r0 < 0.13.3-r1 +1.8.7-r0 < 1.8.7-r1 +1.8.7-r1 < 1.8.7-r2 +1.8.7-r2 < 1.8.7-r3 +1.8.7-r3 < 1.8.7-r4 +1.8.7-r4 < 1.8.8-r0 +1.8.8-r1 < 1.8.8-r2 +1.8.8-r2 < 2.0.11-r2 +1.4.5-r1 < 1.4.6-r0 +1.4.7-r0 < 1.4.10-r0 +1.4.10-r0 < 1.4.11-r0 +1.4.11-r0 < 1.4.13-r0 +1.4.13-r0 < 1.4.14-r0 +1.4.14-r0 < 1.4.15-r0 +1.4.15-r0 < 1.4.15-r1 +1.4.15-r1 < 1.4.15-r2 +1.4.15-r2 < 1.4.15-r3 +1.4.15-r3 < 1.4.15-r4 +1.4.15-r4 < 1.4.17-r0 +1.4.17-r0 < 1.4.18-r0 +1.4.18-r0 < 1.4.19-r0 +1.4.19-r0 < 1.4.20-r0 +1.4.20-r0 < 1.4.21-r0 +1.4.21-r0 < 1.4.21-r1 +1.4.21-r1 < 1.4.22-r0 +1.4.22-r0 < 1.4.22-r1 +1.4.22-r1 < 1.4.24-r0 +1.4.24-r0 < 1.4.24-r1 +1.4.24-r1 < 1.4.25-r0 +1.4.25-r0 < 1.4.25-r1 +1.4.25-r1 < 1.4.25-r2 +1.4.25-r2 < 1.4.31-r0 +1.4.31-r0 < 1.4.31-r2 +1.4.31-r2 < 1.4.32-r0 +1.4.32-r0 < 1.4.32-r2 +1.4.32-r2 < 1.4.33-r0 +1.4.33-r0 < 1.4.34-r0 +1.4.34-r0 < 1.4.34-r1 +1.4.34-r1 < 1.4.35-r1 +1.4.35-r1 < 1.4.36-r1 +0.9.10-r0 < 0.9.11-r0 +0.9.11-r1 < 0.9.11-r2 +0.9.11-r2 < 0.9.11-r3 +0.9.11-r3 < 0.9.11-r4 +0.9.11-r4 < 0.9.12-r0 +0.9.12-r0 < 0.9.13-r0 +0.9.13-r0 < 0.9.13-r1 +0.9.13-r1 < 0.9.14-r0 +0.9.14-r0 < 0.9.14-r1 +0.9.14-r1 < 0.9.14-r2 +0.9.14-r2 < 0.9.14-r3 +0.9.14-r3 < 0.9.14-r4 +0.9.14-r4 < 0.9.14-r5 +0.9.14-r5 < 0.9.14-r6 +0.9.14-r6 < 0.9.14-r7 +0.9.14-r7 < 0.9.14-r8 +0.9.14-r8 < 0.9.14-r9 +0.9.14-r9 < 0.9.14-r10 +0.9.14-r10 < 0.9.14-r11 +0.9.14-r11 < 0.9.14-r12 +0.9.14-r12 < 0.9.15-r0 +0.9.15-r0 < 0.9.15-r1 +0.9.15-r1 < 0.9.15-r2 +0.9.15-r2 < 0.9.15-r3 +0.9.15-r3 < 0.9.15-r4 +0.9.15-r4 < 1.0.0-r0 +1.0.0-r1 < 1.0.0-r2 +1.0.0-r2 < 1.0.0-r3 +1.0.0-r3 < 1.0.0-r4 +1.0.0-r4 < 1.0.0-r5 +1.0.0-r5 < 1.0.0-r6 +1.0.0-r6 < 1.0.0-r7 +1.0.0-r7 < 1.0.0-r8 +1.0.0-r8 < 1.0.0-r9 +1.0.0-r9 < 1.0.0-r10 +1.0.0-r10 < 1.0.0-r11 +1.0.0-r11 < 1.1.0-r0 +1.1.0-r3 < 1.1.0-r4 +1.1.0-r4 < 1.1.0-r5 +1.1.0-r5 < 1.1.0-r6 +1.1.0-r6 < 1.1.0-r7 +1.1.0-r7 < 1.1.1-r0 +1.1.1-r2 < 1.1.1-r3 +1.1.1-r3 < 1.1.2-r0 +1.1.2-r3 < 1.1.2-r4 +1.1.2-r4 < 1.1.2-r5 +1.1.2-r5 < 1.1.3-r0 +1.1.3-r0 < 1.1.3-r1 +1.1.3-r1 < 1.1.3-r2 +1.1.3-r2 < 1.1.3-r3 +1.1.3-r3 < 1.1.3-r4 +1.1.3-r4 < 1.1.3-r5 +1.1.3-r5 < 1.1.4-r0 +1.1.4-r0 < 1.1.4-r1 +1.1.4-r1 < 1.1.4-r2 +1.1.4-r2 < 1.1.4-r3 +1.1.4-r3 < 1.1.4-r4 +1.1.4-r4 < 1.1.4-r5 +1.1.4-r5 < 1.1.4-r6 +1.1.4-r6 < 1.1.4-r7 +1.1.4-r7 < 1.1.4-r8 +1.1.4-r8 < 1.1.5-r0 +1.1.5-r0 < 1.1.5-r1 +1.1.5-r1 < 1.1.5-r2 +1.1.5-r2 < 1.1.5-r3 +1.1.5-r3 < 1.1.5-r4 +1.1.5-r4 < 1.1.6-r0 +1.1.6-r0 < 1.1.7-r0 +1.1.7-r0 < 1.1.7-r1 +1.1.7-r1 < 1.1.7-r2 +1.1.7-r2 < 1.1.8-r0 +1.1.8-r0 < 1.1.8-r1 +1.1.8-r1 < 1.1.9-r0 +1.1.9-r0 < 1.1.9-r1 +1.1.9-r1 < 1.1.9-r2 +1.1.9-r2 < 1.1.9-r3 +1.1.9-r3 < 1.1.9-r4 +1.1.9-r4 < 1.1.9-r5 +1.1.9-r5 < 1.1.10-r0 +1.1.10-r0 < 1.1.10-r1 +1.1.10-r1 < 1.1.10-r2 +1.1.10-r2 < 1.1.10-r3 +1.1.10-r3 < 1.1.10-r4 +1.1.10-r4 < 1.1.11-r0 +1.1.11-r0 < 1.1.11-r1 +1.1.11-r1 < 1.1.11-r2 +1.1.11-r2 < 1.1.12-r0 +1.1.12-r0 < 1.1.12-r1 +1.1.12-r1 < 1.1.12-r2 +1.1.12-r2 < 1.1.13-r0 +1.1.13-r0 < 1.1.13-r1 +1.1.13-r1 < 1.1.13-r2 +1.1.13-r2 < 1.1.14-r0 +1.1.14-r0 < 1.1.14-r1 +1.1.14-r1 < 1.1.14-r2 +1.1.14-r2 < 1.1.14-r3 +1.1.14-r3 < 1.1.14-r4 +1.1.14-r4 < 1.1.14-r5 +1.1.14-r5 < 1.1.14-r6 +1.1.14-r6 < 1.1.14-r7 +1.1.14-r7 < 1.1.14-r8 +1.1.14-r8 < 1.1.14-r9 +1.1.14-r9 < 1.1.14-r10 +1.1.14-r10 < 1.1.14-r11 +1.1.14-r11 < 1.1.15-r0 +1.1.15-r0 < 1.1.15-r1 +1.1.15-r1 < 1.1.15-r2 +1.1.15-r2 < 1.1.15-r3 +1.1.15-r3 < 1.1.15-r4 +1.1.15-r4 < 1.1.15-r5 +1.1.15-r5 < 1.1.15-r6 +1.1.15-r6 < 1.1.16-r0 +1.1.16-r0 < 1.1.16-r1 +1.1.16-r1 < 1.1.16-r2 +1.1.16-r2 < 1.1.16-r3 +1.1.16-r3 < 1.1.16-r4 +1.1.16-r4 < 1.1.16-r5 +1.1.16-r5 < 1.1.16-r6 +1.1.16-r6 < 1.1.16-r7 +1.1.16-r7 < 1.1.16-r8 +1.1.16-r8 < 1.1.16-r9 +1.1.16-r9 < 1.1.16-r10 +1.1.16-r10 < 1.1.16-r11 +1.1.16-r11 < 1.1.16-r12 +1.1.16-r12 < 1.1.16-r13 +1.1.16-r13 < 1.1.16-r14 +1.1.16-r14 < 1.1.16-r15 +1.1.16-r15 < 1.1.16-r16 +1.1.16-r16 < 1.1.16-r17 +1.1.16-r17 < 1.1.16-r18 +1.1.16-r18 < 1.1.16-r19 +1.1.16-r19 < 1.1.16-r20 +1.1.16-r20 < 1.1.16-r21 +1.1.16-r21 < 1.1.16-r22 +1.1.16-r22 < 1.1.17-r0 +1.1.17-r0 < 1.1.17-r1 +1.1.17-r1 < 1.1.17-r2 +1.1.17-r2 < 1.1.18-r0 +1.1.18-r0 < 1.1.18-r1 +1.1.18-r1 < 1.1.18-r2 +1.1.18-r2 < 1.1.18-r3 +1.1.18-r3 < 1.1.18-r4 +1.1.18-r4 < 1.1.18-r5 +1.1.18-r5 < 1.1.18-r6 +1.1.18-r6 < 1.1.18-r7 +1.1.18-r7 < 1.1.18-r8 +1.1.18-r8 < 1.1.19-r0 +1.1.19-r0 < 1.1.19-r1 +1.1.19-r1 < 1.1.19-r2 +1.1.19-r2 < 1.1.19-r3 +1.1.19-r3 < 1.1.19-r4 +1.1.19-r4 < 1.1.19-r5 +1.1.19-r5 < 1.1.19-r6 +1.1.19-r6 < 1.1.19-r7 +1.1.19-r7 < 1.1.19-r8 +1.1.19-r8 < 1.1.19-r9 +1.1.19-r9 < 1.1.19-r10 +1.1.19-r10 < 1.1.20-r0 +1.1.20-r0 < 1.1.20-r1 +1.1.20-r1 < 1.1.20-r2 +1.1.20-r2 < 1.1.20-r3 +1.1.20-r3 < 1.1.21-r0 +1.1.21-r0 < 1.1.21-r1 +1.1.21-r1 < 1.1.21-r2 +1.1.21-r2 < 1.1.22-r0 +1.1.22-r0 < 1.1.22-r1 +1.1.22-r1 < 1.1.22-r2 +1.1.22-r2 < 1.1.23-r0 +1.1.23-r0 < 1.1.23-r1 +1.1.23-r1 < 1.1.23-r2 +1.1.23-r2 < 1.1.23-r3 +1.1.23-r3 < 1.1.24-r0 +1.1.24-r0 < 1.1.24-r1 +1.1.24-r1 < 1.1.24-r2 +1.1.24-r2 < 1.1.24-r3 +1.1.24-r3 < 1.1.24-r4 +1.1.24-r4 < 1.1.24-r5 +1.1.24-r5 < 1.1.24-r6 +1.1.24-r6 < 1.1.24-r7 +1.1.24-r7 < 1.1.24-r8 +1.1.24-r8 < 1.1.24-r9 +1.1.24-r9 < 1.2.0-r0 +1.2.1-r1 < 1.2.1-r2 +1.2.1-r2 < 1.2.2_pre0-r0 +1.2.2_pre0-r0 < 1.2.2_pre0-r1 +1.2.2_pre0-r1 < 1.2.2_pre1-r0 +1.2.5-r0 < 1.2.5-r1 +1.2.5-r1 < 1.4.1-r0 +1.4.1-r1 < 1.5-r0 +1.5-r1 < 1.5.1-r0 +1.5.1-r1 < 1.5.5-r0 +1.5.5-r0 < 1.5.5-r1 +1.5.5-r1 < 1.5.6-r0 +1.5.6-r0 < 1.5.6-r1 +1.5.6-r1 < 1.5.7-r0 +1.5.7-r0 < 1.5.7-r1 +1.5.7-r1 < 1.5.8-r0 +1.5.8-r0 < 1.5.8-r1 +1.5.8-r1 < 1.6.5-r0 +1.6.5-r1 < 1.6.6-r0 +1.6.6-r1 < 1.7-r0 +1.7-r1 < 1.8-r0 +1.8-r1 < 1.8.3-r0 +1.8.4-r1 < 1.8.6-r0 +1.8.6-r0 < 1.8.6-r1 +1.8.6-r1 < 1.8.7-r0 +1.8.7-r1 < 1.8.8-r0 +1.8.8-r1 < 1.8.10-r0 +1.8.10-r0 < 1.8.10-r1 +1.8.10-r1 < 1.8.12-r0 +1.8.12-r1 < 1.8.14-r0 +1.8.14-r0 < 1.8.14-r1 +1.8.14-r1 < 1.8.15-r0 +1.8.15-r0 < 1.8.15-r1 +1.8.15-r1 < 1.8.16-r0 +1.8.16-r0 < 1.8.16-r1 +1.8.16-r1 < 1.8.18-r1 +1.8.18-r1 < 1.10.5-r0 +1.10.5-r1 < 1.10.7-r0 +1.10.7-r0 < 1.10.7-r1 +1.10.7-r1 < 1.11-r0 +1.11-r1 < 1.11.5-r0 +1.11.5-r0 < 1.11.5-r1 +1.11.5-r1 < 1.11.9-r0 +1.11.9-r0 < 1.11.9-r1 +1.11.9-r1 < 1.11.10-r0 +1.11.10-r0 < 1.11.10-r1 +1.11.10-r1 < 1.11.11-r0 +1.11.11-r0 < 1.11.11-r1 +1.11.11-r1 < 1.11.12-r0 +1.11.12-r0 < 1.11.12-r1 +1.11.12-r1 < 1.11.13-r0 +1.11.13-r0 < 1.11.13-r1 +1.11.13-r1 < 1.11.15-r0 +1.11.15-r0 < 1.11.15-r1 +1.11.15-r1 < 1.11.18-r0 +1.11.18-r0 < 1.11.18-r1 +1.11.18-r1 < 1.11.20-r0 +1.11.20-r0 < 1.11.20-r1 +1.11.20-r1 < 1.11.21-r1 +1.11.21-r1 < 1.11.22-r1 +1.11.22-r1 < 1.11.23-r1 +1.11.23-r1 < 1.11.27-r1 +1.11.27-r1 < 1.11.28-r1 +1.4.1-r0 < 1.5-r0 +1.5-r0 < 1.5.1-r0 +1.5.1-r0 < 1.5.5-r0 +1.5.5-r0 < 1.5.6-r0 +1.5.6-r0 < 1.5.7-r0 +1.5.7-r0 < 1.5.8-r0 +1.5.8-r0 < 1.6.5-r0 +1.6.6-r0 < 1.7-r0 +1.7-r0 < 1.8-r0 +1.8-r0 < 1.8.3-r0 +1.8.4-r0 < 1.8.6-r0 +1.8.7-r0 < 1.8.8-r0 +1.8.8-r0 < 1.8.10-r0 +1.8.10-r0 < 1.8.12-r0 +1.8.12-r0 < 1.8.14-r0 +1.8.14-r0 < 1.8.15-r0 +1.8.15-r0 < 1.8.16-r0 +1.8.16-r0 < 1.10.5-r0 +1.10.5-r0 < 1.10.7-r0 +1.10.7-r0 < 1.11-r0 +1.11.5-r0 < 1.11.9-r0 +1.11.9-r0 < 1.11.10-r0 +1.11.10-r0 < 1.11.11-r0 +1.11.11-r0 < 1.11.12-r0 +1.11.12-r0 < 1.11.13-r0 +1.11.13-r0 < 1.11.15-r0 +1.11.15-r0 < 1.11.18-r0 +1.11.18-r0 < 1.11.20-r0 +1.11.20-r1 < 1.11.21-r0 +1.11.21-r0 < 1.11.22-r0 +1.11.22-r0 < 1.11.23-r0 +1.11.23-r1 < 1.11.23-r2 +1.11.23-r2 < 1.11.27-r2 +1.11.27-r2 < 1.11.28-r2 +4.65-r0 < 9.04-r0 +9.04-r0 < 9.04-r1 +9.04-r1 < 9.04-r2 +9.04-r2 < 9.13-r0 +9.13-r0 < 9.20.1-r0 +9.20.1-r0 < 9.20.1-r1 +9.20.1-r1 < 9.20.1-r2 +9.20.1-r2 < 9.38-r0 +9.38-r0 < 9.38-r2 +9.38-r2 < 9.38.1-r0 +9.38.1-r0 < 9.38.1-r2 +9.38.1-r2 < 15.09-r0 +15.09-r0 < 15.09-r2 +15.09-r2 < 15.14.1-r0 +15.14.1-r0 < 15.14.1-r2 +15.14.1-r2 < 16.02-r0 +16.02-r0 < 16.02-r1 +16.02-r1 < 16.02-r2 +0.10.0-r0 < 0.10.0-r1 +0.10.0-r1 < 0.10.0-r2 +0.10.0-r2 < 0.10.1-r0 +0.10.1-r0 < 0.12.0-r0 +0.12.0-r0 < 0.12.0-r1 +0.12.0-r1 < 0.12.2-r0 +0.12.2-r0 < 0.12.2-r1 +0.12.2-r1 < 0.12.3-r0 +0.12.5-r0 < 0.12.5-r1 +0.12.5-r1 < 0.12.5-r2 +0.12.5-r2 < 0.12.6-r0 +0.12.6-r0 < 0.12.6-r1 +0.12.6-r1 < 0.12.7-r0 +0.12.7-r0 < 0.12.7-r1 +0.12.7-r1 < 0.12.8-r0 +0.12.8-r0 < 0.12.8-r1 +0.12.8-r1 < 0.12.8-r2 +0.12.8-r2 < 0.12.8-r3 +0.12.8-r3 < 0.12.8-r4 +0.12.8-r4 < 0.13.3-r0 +0.13.3-r1 < 0.13.3-r2 +0.13.3-r2 < 0.14.0-r4 +0.14.0-r4 < 0.14.0-r5 +0.14.0-r5 < 0.14.0-r6 +0.14.0-r6 < 0.14.0-r7 +0.14.0-r7 < 0.14.1-r0 +0.14.1-r0 < 0.14.1-r1 +0.14.1-r1 < 0.14.1-r2 +0.14.1-r2 < 0.14.1-r3 +0.14.1-r3 < 0.14.1-r4 +0.14.1-r4 < 0.14.1-r5 +0.14.1-r5 < 0.14.1-r6 +0.14.1-r6 < 0.14.2-r0 +0.14.2-r0 < 0.14.2-r1 +0.14.2-r1 < 0.14.3-r0 +0.14.3-r0 < 0.14.3-r1 +1.3-r1 < 1.5.0-r1 +1.5.0-r1 < 1.5.0-r2 +1.5.0-r2 < 1.5.1-r0 +1.5.1-r1 < 2.1.0-r0 +2.1.1-r1 < 2.1.2-r0 +2.1.2-r2 < 2.2.0-r0 +2.2.0-r1 < 2.2.0-r2 +2.2.0-r2 < 2.2.0-r3 +2.2.0-r3 < 2.3.0-r0 +2.3.0-r2 < 2.3.0-r3 +2.3.0-r3 < 2.3.1-r0 +2.3.1-r2 < 2.3.1-r3 +2.3.1-r3 < 2.3.1-r4 +2.3.1-r4 < 2.3.1-r5 +2.3.1-r5 < 2.3.1-r6 +2.3.1-r6 < 2.3.1-r7 +2.3.1-r7 < 2.4.0-r0 +2.4.0-r0 < 2.4.0-r1 +2.4.0-r1 < 2.4.0-r2 +2.4.0-r2 < 2.4.0-r3 +2.4.0-r3 < 2.4.0-r4 +0.3.1-r0 < 0.4-r0 +0.4-r0 < 0.5-r0 +0.5-r0 < 0.7-r0 +0.7-r0 < 0.7.1-r0 +0.7.1-r0 < 0.8-r0 +0.8-r0 < 0.9-r0 +0.9-r0 < 1.0-r0 +1.0-r1 < 1.1-r0 +1.1-r1 < 1.2-r1 +1.2-r1 < 1.2.1-r1 +1.2.3-r0 < 1.3.3-r0 +1.3.3-r0 < 1.3.4-r0 +1.3.4-r0 < 1.4.1-r0 +1.4.1-r0 < 1.4.3-r0 +1.4.3-r0 < 1.4.5-r0 +1.4.5-r0 < 1.5.0-r0 +1.5.0-r0 < 1.5.4-r0 +1.5.4-r0 < 1.5.5-r0 +1.5.5-r0 < 1.6.1-r0 +1.6.1-r0 < 1.6.5-r0 +1.6.6-r0 < 1.6.7-r0 +1.6.7-r0 < 1.7.0-r0 +1.7.0-r0 < 1.7.1-r0 +1.7.1-r0 < 1.7.2-r0 +1.7.2-r0 < 1.8.0-r0 +1.8.0-r0 < 1.8.2-r0 +1.8.2-r0 < 1.8.4-r0 +1.8.4-r0 < 1.9.2-r0 +1.9.3-r1 < 1.9.4-r0 +1.9.4-r0 < 2.0.0.2-r0 +2.0.0.2-r0 < 2.0.0.2-r1 +2.0.0.2-r1 < 2.0.1.0-r1 +2.0.1.0-r1 < 2.1.0.0-r0 +2.1.0.0-r0 < 2.1.0.0-r1 +2.1.0.0-r1 < 2.1.1.0-r0 +2.1.1.0-r0 < 2.1.1.0-r1 +2.1.1.0-r1 < 2.1.2.0-r0 +2.1.2.0-r0 < 2.1.2.0-r1 +2.1.2.0-r1 < 2.2.0.0-r0 +2.2.0.0-r0 < 2.2.0.0-r1 +2.2.0.0-r1 < 2.2.1.0-r0 +2.2.1.0-r0 < 2.2.1.0-r1 +2.2.1.0-r1 < 2.2.2.0-r0 +2.2.2.0-r0 < 2.3.0.0-r0 +2.3.0.0-r0 < 2.3.0.0-r1 +2.3.0.0-r1 < 2.3.1.0-r0 +2.3.1.0-r0 < 2.3.1.0-r1 +2.3.1.0-r1 < 2.3.2.0-r0 +2.3.2.0-r0 < 2.3.2.0-r1 +2.3.2.0-r1 < 2.4.0.0-r0 +2.4.0.0-r0 < 2.4.0.0-r1 +2.4.0.0-r1 < 2.4.1.0-r0 +2.4.1.0-r0 < 2.4.1.0-r1 +2.4.1.0-r1 < 2.4.2.0-r0 +2.4.2.0-r0 < 2.4.2.0-r1 +2.4.2.0-r1 < 2.4.3.0-r0 +2.4.3.0-r0 < 2.4.3.0-r1 +2.4.3.0-r1 < 2.5.0-r0 +2.5.0-r1 < 2.5.2-r0 +2.5.2-r1 < 2.5.4-r0 +2.5.5-r0 < 2.5.5-r1 +2.5.5-r1 < 2.5.15-r1 +2.5.15-r1 < 2.6.0-r0 +2.6.0-r0 < 2.6.1-r0 +2.6.1-r0 < 2.6.3-r0 +2.6.3-r0 < 2.6.19-r1 +2.6.19-r1 < 2.7.0-r0 +2.7.0-r0 < 2.7.0-r1 +2.7.0-r1 < 2.7.9-r0 +2.7.9-r1 < 2.7.12-r1 +2.7.12-r1 < 2.7.13-r1 +2.7.13-r1 < 2.7.14-r1 +2.7.14-r1 < 2.7.16-r1 +2.7.16-r1 < 2.8.0-r1 +2.8.0-r1 < 2.8.1-r0 +2.8.1-r1 < 2.8.2-r0 +2.8.2-r0 < 2.8.3-r0 +2.8.3-r1 < 2.8.4-r0 +2.8.4-r1 < 2.8.6-r0 +2.8.6-r3 < 2.8.8-r1 +2.8.8-r1 < 2.8.9-r1 +2.8.9-r1 < 2.8.11-r1 +2.8.11-r1 < 2.8.15-r1 +2.8.15-r1 < 2.8.16-r1 +2.8.16-r1 < 2.9.1-r0 +2.9.1-r0 < 2.9.1-r3 +2.9.1-r3 < 2.9.2-r0 +2.9.2-r1 < 2.9.3-r1 +2.9.3-r1 < 2.9.3-r3 +2.9.3-r3 < 2.9.4-r1 +2.9.4-r1 < 2.9.5-r1 +2.9.5-r1 < 2.9.6-r1 +2.9.6-r1 < 2.9.6-r3 +2.9.6-r3 < 2.9.7-r1 +2.9.7-r1 < 2.9.7-r3 +2.9.7-r3 < 2.9.9-r1 +2.9.9-r1 < 2.9.9-r3 +2.9.9-r3 < 2.9.11-r1 +2.9.11-r1 < 2.9.11-r3 +2.9.11-r3 < 2.9.13-r1 +2.9.13-r1 < 2.9.13-r3 +2.9.13-r3 < 2.9.14-r1 +2.9.14-r1 < 2.9.14-r3 +2.9.14-r3 < 2.10.1-r0 +2.10.1-r0 < 2.10.3-r0 +2.10.3-r0 < 2.10.4-r0 +2.10.5-r0 < 2.10.6-r0 +2.10.6-r0 < 2.10.6-r1 +1.4.4-r0 < 1.5.2-r0 +1.5.2-r0 < 1.6.1-r0 +1.2.3.3-r2 < 1.2.3.3-r3 +1.2.3.3-r3 < 1.2.3.3-r4 +1.2.3.3-r4 < 1.2.3.3-r5 +1.2.3.3-r5 < 1.2.3.3-r6 +1.2.3.3-r6 < 1.2.3.3-r7 +1.2.3.3-r7 < 1.2.3.4-r0 +1.2.3.4-r0 < 1.2.3.4-r1 +1.2.3.4-r1 < 1.2.3.7-r0 +1.2.3.7-r0 < 1.2.3.7-r1 +1.2.3.7-r1 < 1.2.3.9-r0 +1.2.3.9-r0 < 1.2.4-r0 +1.2.4-r0 < 1.2.4-r1 +1.2.4-r1 < 1.2.5-r0 +1.2.5-r1 < 1.2.5-r2 +1.2.5-r2 < 1.2.6-r0 +1.2.6-r0 < 1.2.7-r0 +1.2.7-r0 < 1.2.7-r1 +1.2.7-r1 < 1.2.8-r0 +1.2.8-r0 < 1.2.8-r1 +1.2.8-r1 < 1.2.8-r2 +1.2.8-r2 < 1.2.10-r0 +1.2.10-r0 < 1.2.10-r2 +1.2.10-r2 < 1.2.11-r0 +1.2.11-r0 < 1.2.11-r1 +1.2.11-r1 < 1.2.11-r2 +1.2.11-r2 < 1.2.11-r3 +1.2.11-r3 < 1.2.11-r4 +1.2.11-r4 < 1.2.12-r0 +1.2.12-r0 < 1.2.12-r1 +1.14.14-r0 < 1.14.15-r0 +1.14.15-r0 < 1.14.16-r0 +1.14.16-r0 < 1.14.16-r1 +1.14.16-r1 < 1.14.18-r0 +1.14.18-r0 < 1.14.18-r1 +1.14.18-r1 < 1.14.18-r2 +1.14.18-r2 < 1.14.18-r3 +1.14.18-r3 < 1.14.18-r4 +1.14.18-r4 < 1.14.18-r5 +1.14.18-r5 < 1.14.20-r0 +1.14.20-r0 < 1.14.21-r0 +1.14.21-r0 < 1.14.21-r1 +1.14.21-r1 < 1.14.22-r0 +1.14.22-r0 < 1.14.22-r1 +1.14.22-r1 < 1.14.23-r0 +1.14.23-r0 < 1.14.23-r1 +1.14.23-r1 < 1.14.24-r0 +1.14.24-r0 < 1.14.24-r1 +1.14.24-r1 < 1.14.25-r0 +1.14.25-r0 < 1.14.25-r1 +1.14.25-r1 < 1.14.26-r0 +1.14.26-r0 < 1.14.26-r1 +1.14.26-r1 < 1.14.27-r0 +1.14.27-r0 < 1.14.27-r1 +1.14.27-r1 < 1.14.28-r0 +1.14.28-r0 < 1.14.28-r1 +1.14.28-r1 < 1.14.29-r0 +1.14.29-r0 < 1.14.29-r1 +1.14.29-r1 < 1.14.30-r0 +1.14.30-r0 < 1.14.30-r1 +1.14.30-r1 < 1.14.32-r0 +1.14.32-r0 < 1.14.32-r1 +1.14.32-r1 < 1.14.33-r0 +1.14.33-r0 < 1.14.33-r1 +1.14.33-r1 < 1.14.34-r0 +1.14.34-r0 < 1.14.34-r1 +1.14.34-r1 < 1.14.36-r0 +1.14.36-r0 < 1.14.36-r1 +1.14.36-r1 < 1.14.38-r0 +1.14.38-r0 < 1.14.39-r0 +1.14.39-r0 < 1.14.39-r1 +1.14.39-r1 < 1.14.39-r2 +1.14.39-r2 < 1.14.40-r0 +1.14.40-r0 < 1.14.40-r2 +0.9.10-r0 < 0.9.10-r1 +0.9.10-r1 < 0.9.10-r2 +0.9.10-r2 < 0.9.11-r0 +1.900.1-r0 < 1.900.1-r1 +1.900.1-r1 < 1.900.1-r2 +1.900.1-r2 < 1.900.1-r3 +1.900.1-r3 < 1.900.1-r4 +1.900.1-r4 < 1.900.1-r5 +1.900.1-r5 < 1.900.1-r6 +1.900.1-r6 < 1.900.1-r7 +1.900.1-r7 < 1.900.1-r8 +1.900.1-r8 < 1.900.1-r9 +1.900.1-r9 < 1.900.1-r10 +1.900.1-r10 < 1.900.1-r11 +1.900.1-r11 < 1.900.1-r12 +1.900.1-r12 < 2.0.10-r0 +2.0.10-r0 < 2.0.10-r1 +2.0.10-r1 < 2.0.12-r0 +1.4.3-r0 < 1.5-r0 +1.5.1-r1 < 1.5.2-r0 +1.5.3-r0 < 1.5.4-r0 +1.5.4-r0 < 1.6-r0 +1.6-r0 < 1.6.2-r0 +1.6.4-r0 < 1.7-r0 +1.7.2-r0 < 1.7.3-r0 +1.7.3-r0 < 1.7.5-r0 +1.8-r0 < 1.8.1-r0 +1.8.4-r1 < 1.9-r0 +1.9-r0 < 1.9-r1 +1.9-r1 < 1.9.1-r0 +1.9.3-r1 < 2.0-r0 +2.0-r1 < 2.0.1-r0 +2.0.1-r1 < 2.0.2-r0 +2.0.2-r1 < 2.1-r0 +2.1-r1 < 2.1.1-r0 +2.1.2-r1 < 2.2.1-r0 +2.2.1-r1 < 2.2.2-r0 +2.2.2-r1 < 2.2.3-r0 +2.2.3-r1 < 2.3-r0 +2.3-r1 < 2.3.1-r0 +2.3.1-r1 < 2.3.2-r0 +2.3.2-r0 < 2.3.2-r1 +2.3.2-r1 < 2.4-r0 +2.4-r1 < 2.4.1-r0 +2.4.2-r1 < 2.5.1-r0 +2.5.1-r1 < 2.5.2-r0 +2.5.4-r1 < 2.6-r0 +2.6-r1 < 2.6.1-r0 +2.6.1-r1 < 2.6.2-r0 +2.6.3-r0 < 2.6.3-r1 +2.6.3-r1 < 2.7-r0 +2.7-r1 < 2.7.1-r0 +2.7.2-r0 < 2.7.2-r1 +2.7.2-r1 < 2.8-r0 +2.8-r1 < 2.8.1-r0 +2.8.2-r1 < 2.9-r0 +2.9.1-r1 < 2.9.2-r0 +2.9.2-r1 < 3.0-r0 +3.0-r0 < 3.0-r1 +3.0-r1 < 3.0.2-r0 +3.0.2-r1 < 3.1-r0 +3.1-r0 < 3.1-r1 +3.1-r1 < 3.1.1-r0 +3.1.1-r0 < 3.1.1-r1 +3.1.1-r1 < 3.2.1-r0 +3.2.1-r1 < 3.2.2-r0 +3.2.3-r1 < 3.3-r0 +3.3-r0 < 3.3-r1 +3.3-r1 < 3.3.3-r0 +3.3.3-r0 < 3.3.3-r1 +3.3.3-r1 < 3.4-r0 +3.4-r0 < 3.4-r1 +3.4-r1 < 3.4.1-r0 +3.4.2-r1 < 3.5-r0 +3.5-r0 < 3.5-r1 +3.5-r1 < 3.5.1-r0 +3.5.1-r1 < 3.5.2-r0 +3.5.2-r1 < 3.6.2-r0 +3.6.2-r1 < 3.7.1-r0 +3.7.1-r1 < 3.7.2-r0 +3.7.2-r1 < 3.7.3-r0 +3.7.3-r1 < 3.8.1-r0 +3.8.1-r0 < 3.8.1-r1 +3.8.1-r1 < 3.8.2-r0 +3.8.2-r1 < 3.8.3-r0 +3.8.3-r0 < 3.9-r0 +3.9-r0 < 3.9-r1 +3.9-r1 < 3.9.1-r0 +3.9.1-r0 < 3.9.1-r1 +3.9.1-r1 < 4.0.1-r0 +4.0.1-r1 < 4.1-r0 +4.1-r0 < 4.1-r1 +4.1-r1 < 4.1.1-r0 +4.1.1-r1 < 4.1.2-r0 +4.1.2-r0 < 4.1.2-r1 +4.1.2-r1 < 4.1.3-r0 +4.1.3-r1 < 4.2.1-r0 +4.2.1-r1 < 4.2.2-r0 +4.2.2-r0 < 4.2.2-r1 +4.2.2-r1 < 4.3.1-r0 +4.3.1-r1 < 4.3.2-r0 +4.3.2-r1 < 4.3.3-r0 +4.3.3-r0 < 4.3.3-r1 +4.3.3-r1 < 4.4-r0 +4.4-r1 < 4.4.1-r0 +4.4.1-r1 < 4.4.2-r0 +4.4.2-r1 < 4.5-r0 +4.5-r0 < 4.5-r1 +4.5-r1 < 4.5.2-r0 +4.5.2-r0 < 4.5.2-r1 +4.5.2-r1 < 4.5.3-r0 +4.5.3-r1 < 4.6-r0 +4.6-r1 < 4.6.1-r0 +4.6.1-r1 < 4.6.2-r0 +4.6.2-r0 < 4.6.2-r1 +4.6.2-r1 < 4.8-r0 +4.8-r1 < 4.8.1-r0 +4.8.1-r1 < 4.8.2-r0 +1.6.0.4-r1 < 1.6.0.4-r2 +1.6.0.4-r2 < 1.6.1-r0 +1.6.1-r0 < 1.6.1.3-r0 +1.6.1.3-r0 < 1.6.1.3-r1 +1.6.1.3-r1 < 1.6.2.1-r0 +1.6.2.1-r0 < 1.6.2.3-r0 +1.6.2.3-r0 < 1.6.2.4-r0 +1.6.2.4-r0 < 1.6.2.5-r0 +1.6.2.5-r0 < 1.6.3.2-r0 +1.6.3.2-r0 < 1.6.3.3-r0 +1.6.3.3-r0 < 1.6.4-r0 +1.6.4-r0 < 1.6.4.1-r0 +1.6.4.1-r0 < 1.6.4.2-r0 +1.6.4.2-r0 < 1.6.4.2-r1 +1.6.4.2-r1 < 1.6.4.2-r2 +1.6.4.2-r2 < 1.6.4.4-r0 +1.6.4.4-r0 < 1.6.5-r0 +1.6.5-r0 < 1.6.5.2-r0 +1.6.5.2-r0 < 1.6.5.3-r0 +1.6.5.3-r0 < 1.6.5.5-r0 +1.6.5.5-r0 < 1.6.5.6-r0 +1.6.5.6-r0 < 1.6.5.7-r0 +1.6.5.7-r0 < 1.6.6-r0 +1.6.6-r0 < 1.6.6.1-r0 +1.6.6.1-r0 < 1.7.0.2-r0 +1.7.0.2-r0 < 1.7.0.3-r0 +1.7.0.3-r0 < 1.7.0.4-r0 +1.7.0.4-r0 < 1.7.0.5-r0 +1.7.0.5-r0 < 1.7.0.5-r1 +1.7.0.5-r1 < 1.7.1-r0 +1.7.1-r1 < 1.7.1-r2 +1.7.1-r2 < 1.7.1.1-r0 +1.7.1.1-r0 < 1.7.2-r0 +1.7.2-r0 < 1.7.2.1-r0 +1.7.2.1-r0 < 1.7.2.2-r0 +1.7.2.2-r0 < 1.7.2.3-r0 +1.7.2.3-r0 < 1.7.3-r0 +1.7.3-r0 < 1.7.3.1-r0 +1.7.3.1-r0 < 1.7.3.2-r0 +1.7.3.2-r0 < 1.7.3.2-r1 +1.7.3.2-r1 < 1.7.3.3-r0 +1.7.3.3-r0 < 1.7.3.4-r0 +1.7.3.4-r0 < 1.7.3.5-r0 +1.7.3.5-r0 < 1.7.3.5-r1 +1.7.3.5-r1 < 1.7.4-r0 +1.7.4-r1 < 1.7.4.1-r0 +1.7.4.1-r0 < 1.7.4.2-r0 +1.7.4.2-r0 < 1.7.4.4-r0 +1.7.4.4-r0 < 1.7.4.5-r0 +1.7.4.5-r0 < 1.7.5.1-r0 +1.7.5.1-r0 < 1.7.5.1-r1 +1.7.5.1-r1 < 1.7.5.2-r0 +1.7.5.2-r0 < 1.7.5.3-r0 +1.7.5.3-r0 < 1.7.5.4-r0 +1.7.5.4-r0 < 1.7.5.4-r1 +1.7.5.4-r1 < 1.7.6-r0 +1.7.6-r0 < 1.7.6.1-r0 +1.7.6.1-r0 < 1.7.7-r0 +1.7.7-r0 < 1.7.7.1-r0 +1.7.7.1-r0 < 1.7.7.2-r0 +1.7.7.2-r0 < 1.7.7.3-r0 +1.7.7.3-r0 < 1.7.7.4-r0 +1.7.7.4-r0 < 1.7.8-r0 +1.7.8-r0 < 1.7.8.1-r0 +1.7.8.1-r0 < 1.7.8.2-r0 +1.7.8.2-r0 < 1.7.8.3-r0 +1.7.8.3-r0 < 1.7.8.4-r0 +1.7.8.4-r0 < 1.7.8.4-r1 +1.7.8.4-r1 < 1.7.9-r0 +1.7.9-r0 < 1.7.9.1-r0 +1.7.9.1-r0 < 1.7.9.2-r0 +1.7.9.2-r0 < 1.7.9.3-r0 +1.7.9.3-r0 < 1.7.9.4-r0 +1.7.9.4-r0 < 1.7.9.5-r0 +1.7.9.5-r0 < 1.7.9.6-r0 +1.7.9.6-r0 < 1.7.10-r0 +1.7.10-r0 < 1.7.10.1-r0 +1.7.10.1-r0 < 1.7.10.2-r0 +1.7.10.2-r0 < 1.7.10.2-r1 +1.7.10.2-r1 < 1.7.10.3-r0 +1.7.10.3-r0 < 1.7.10.4-r0 +1.7.10.4-r0 < 1.7.11-r0 +1.7.11-r0 < 1.7.11.1-r0 +1.7.11.1-r0 < 1.7.11.1-r1 +1.7.11.1-r1 < 1.7.11.2-r0 +1.7.11.2-r0 < 1.7.11.3-r0 +1.7.11.3-r0 < 1.7.11.4-r0 +1.7.11.4-r0 < 1.7.11.5-r0 +1.7.11.5-r0 < 1.7.12-r0 +1.7.12-r0 < 1.7.12.1-r0 +1.7.12.1-r0 < 1.7.12.2-r0 +1.7.12.2-r0 < 1.7.12.3-r0 +1.7.12.3-r0 < 1.7.12.4-r0 +1.7.12.4-r0 < 1.8.0-r0 +1.8.0-r0 < 1.8.0.1-r0 +1.8.0.1-r0 < 1.8.0.2-r0 +1.8.0.2-r0 < 1.8.0.3-r0 +1.8.0.3-r0 < 1.8.1-r0 +1.8.1-r0 < 1.8.1.1-r0 +1.8.1.1-r0 < 1.8.1.2-r0 +1.8.1.2-r0 < 1.8.1.3-r0 +1.8.1.3-r0 < 1.8.1.4-r0 +1.8.1.4-r0 < 1.8.1.5-r0 +1.8.1.5-r0 < 1.8.2-r0 +1.8.2-r0 < 1.8.2.1-r0 +1.8.2.1-r0 < 1.8.2.2-r0 +1.8.2.2-r0 < 1.8.2.3-r0 +1.8.2.3-r0 < 1.8.2.3-r1 +1.8.2.3-r1 < 1.8.2.3-r2 +1.8.2.3-r2 < 1.8.3-r0 +1.8.3-r0 < 1.8.3.1-r0 +1.8.3.1-r0 < 1.8.3.2-r0 +1.8.3.2-r0 < 1.8.3.3-r0 +1.8.3.3-r0 < 1.8.3.4-r0 +1.8.3.4-r0 < 1.8.4-r0 +1.8.4-r0 < 1.8.4.1-r0 +1.8.4.1-r0 < 1.8.4.2-r0 +1.8.4.2-r0 < 1.8.4.3-r0 +1.8.4.3-r0 < 1.8.4.3-r1 +1.8.4.3-r1 < 1.8.4.3-r2 +1.8.4.3-r2 < 1.8.5.1-r0 +1.8.5.1-r0 < 1.8.5.1-r1 +1.8.5.1-r1 < 1.8.5.1-r2 +1.8.5.1-r2 < 1.8.5.1-r3 +1.8.5.1-r3 < 1.8.5.1-r4 +1.8.5.1-r4 < 1.8.5.2-r0 +1.8.5.2-r0 < 1.8.5.3-r0 +1.8.5.3-r0 < 1.8.5.3-r1 +1.8.5.3-r1 < 1.8.5.4-r0 +1.8.5.4-r0 < 1.9.0-r0 +1.9.1-r0 < 1.9.2-r0 +1.9.2-r1 < 1.9.2-r2 +1.9.2-r2 < 1.9.3-r0 +1.9.3-r0 < 2.0.0-r0 +2.0.4-r0 < 2.1.0-r0 +2.1.0-r0 < 2.1.1-r0 +2.1.2-r0 < 2.1.3-r0 +2.1.3-r0 < 2.1.3-r1 +2.1.3-r1 < 2.2.0-r0 +2.2.2-r0 < 2.3.0-r0 +2.3.0-r0 < 2.3.1-r0 +2.3.4-r0 < 2.3.5-r0 +2.3.5-r0 < 2.3.6-r0 +2.3.6-r0 < 2.3.6-r1 +2.3.6-r1 < 2.3.7-r0 +2.3.7-r0 < 2.4.0-r0 +2.4.5-r0 < 2.4.6-r0 +2.4.6-r1 < 2.5.0-r0 +2.5.2-r0 < 2.5.3-r0 +2.5.3-r0 < 2.6.0-r0 +2.6.0-r3 < 2.6.1-r0 +2.6.1-r1 < 2.6.3-r0 +2.6.3-r1 < 2.6.4-r0 +2.6.4-r0 < 2.6.4-r1 +2.6.4-r1 < 2.6.6-r1 +2.6.6-r1 < 2.6.7-r1 +2.6.7-r1 < 2.7.0-r0 +2.7.0-r0 < 2.7.1-r0 +2.7.1-r0 < 2.7.2-r0 +2.7.3-r0 < 2.7.4-r0 +2.7.4-r0 < 2.8.0-r0 +2.8.4-r1 < 2.8.5-r1 +2.8.5-r1 < 2.9.0-r0 +2.9.0-r1 < 2.9.1-r0 +2.9.2-r1 < 2.9.3-r0 +2.9.3-r0 < 2.9.3-r1 +2.9.3-r1 < 2.10.0-r0 +2.10.0-r0 < 2.10.0-r1 +2.10.0-r1 < 2.10.1-r0 +2.10.1-r0 < 2.10.1-r1 +2.10.1-r1 < 2.10.2-r0 +2.10.2-r1 < 2.11.0-r0 +2.11.1-r1 < 2.11.2-r1 +2.11.2-r1 < 2.11.3-r1 +2.11.3-r1 < 2.12.1-r0 +2.12.1-r0 < 2.12.2-r0 +2.12.2-r0 < 2.12.2-r1 +2.12.2-r1 < 2.13.0-r0 +2.13.0-r0 < 2.13.0-r1 +2.13.0-r1 < 2.13.1-r0 +2.13.1-r0 < 2.13.2-r0 +2.13.2-r1 < 2.13.3-r0 +2.13.3-r1 < 2.13.4-r0 +2.13.4-r0 < 2.13.5-r1 +2.13.5-r1 < 2.13.7-r1 +2.13.7-r1 < 2.14.0-r0 +2.14.0-r0 < 2.14.0-r1 +2.14.0-r1 < 2.14.1-r0 +2.14.1-r0 < 2.14.1-r1 +2.14.1-r1 < 2.14.2-r0 +2.14.2-r0 < 2.14.3-r0 +2.14.3-r0 < 2.15.0-r0 +2.15.0-r0 < 2.15.0-r1 +2.15.0-r1 < 2.15.0-r2 +2.15.0-r2 < 2.15.1-r0 +2.15.1-r0 < 2.15.2-r1 +2.15.2-r1 < 2.15.3-r1 +2.15.3-r1 < 2.16.0-r0 +2.16.0-r0 < 2.16.1-r0 +2.16.1-r0 < 2.16.2-r0 +2.16.2-r0 < 2.16.3-r0 +2.16.3-r0 < 2.16.3-r1 +2.16.3-r1 < 2.17.0-r0 +2.17.0-r0 < 2.17.0-r1 +2.17.0-r1 < 2.17.1-r0 +2.17.1-r0 < 2.17.1-r1 +2.17.1-r1 < 2.18.0-r0 +2.18.0-r0 < 2.18.0-r1 +2.18.0-r1 < 2.18.1-r1 +2.18.1-r1 < 2.18.2-r1 +2.18.2-r1 < 2.18.3-r1 +2.18.3-r1 < 2.19.0-r0 +2.19.0-r0 < 2.19.1-r0 +2.19.1-r0 < 2.19.1-r1 +2.19.1-r1 < 2.19.2-r0 +2.19.2-r0 < 2.19.2-r1 +2.19.2-r1 < 2.20.1-r0 +2.20.1-r0 < 2.20.1-r1 +2.20.1-r1 < 2.20.2-r1 +2.20.2-r1 < 2.20.3-r1 +2.20.3-r1 < 2.21.0-r0 +2.21.0-r0 < 2.21.0-r1 +2.21.0-r1 < 2.21.0-r2 +2.21.0-r2 < 2.21.0-r3 +2.21.0-r3 < 2.21.0-r4 +2.21.0-r4 < 2.22.0-r0 +2.22.0-r0 < 2.22.0-r1 +2.22.0-r1 < 2.22.0-r2 +2.22.0-r2 < 2.22.0-r4 +2.22.0-r4 < 2.22.1-r0 +2.22.1-r0 < 2.22.2-r4 +2.22.2-r4 < 2.22.3-r4 +2.22.3-r4 < 2.22.4-r4 +2.22.4-r4 < 2.23.0-r0 +2.23.0-r0 < 2.23.0-r1 +2.23.0-r1 < 2.23.0-r2 +2.23.0-r2 < 2.24.0-r0 +2.24.0-r0 < 2.24.1-r0 +2.24.1-r0 < 2.24.2-r0 +2.24.2-r0 < 2.24.2-r1 +2.24.2-r1 < 2.24.3-r1 +2.24.3-r1 < 2.25.0-r0 +2.25.0-r0 < 2.25.1-r0 +2.25.1-r0 < 2.25.2-r0 +2.25.2-r0 < 2.26.0-r0 +2.26.0-r0 < 2.26.1-r0 +2.26.1-r0 < 2.26.1-r1 +2.26.1-r1 < 2.26.2-r0 +2.26.2-r0 < 2.26.2-r1 +2.26.2-r1 < 2.27.0-r0 +2.27.0-r0 < 2.27.0-r1 +2.27.0-r1 < 2.28.0-r0 +2.28.0-r0 < 2.28.0-r1 +2.28.0-r1 < 2.29.0-r0 +2.29.0-r0 < 2.29.0-r1 +2.29.0-r1 < 2.29.1-r0 +2.29.1-r0 < 2.29.1-r1 +2.29.1-r1 < 2.29.2-r0 +2.29.2-r0 < 2.29.2-r1 +2.29.2-r1 < 2.30.0-r0 +2.30.0-r0 < 2.30.0-r1 +2.30.0-r1 < 2.30.1-r0 +2.30.1-r0 < 2.30.1-r1 +2.30.1-r1 < 2.30.2-r0 +2.30.2-r0 < 2.30.2-r1 +2.30.2-r1 < 2.30.3-r1 +2.30.3-r1 < 2.30.5-r1 +2.30.5-r1 < 2.31.0-r0 +2.31.0-r0 < 2.31.1-r0 +2.31.1-r0 < 2.31.1-r1 +2.31.1-r1 < 2.32.0-r0 +2.32.0-r0 < 2.32.0-r1 +2.32.0-r1 < 2.32.0-r2 +2.32.0-r2 < 2.32.1-r1 +2.32.1-r1 < 2.32.2-r1 +2.32.2-r1 < 2.32.3-r1 +2.32.3-r1 < 2.32.4-r1 +2.32.4-r1 < 2.32.5-r1 +2.32.5-r1 < 2.32.6-r1 +2.32.6-r1 < 2.33.0-r0 +2.33.0-r0 < 2.33.0-r1 +2.33.0-r1 < 2.33.0-r2 +2.33.0-r2 < 2.33.1-r0 +2.33.1-r0 < 2.33.1-r2 +2.33.1-r2 < 2.34.0-r0 +2.34.0-r0 < 2.34.0-r2 +2.34.0-r2 < 2.34.1-r0 +2.34.1-r0 < 2.34.1-r1 +2.34.1-r1 < 2.34.1-r2 +2.34.1-r2 < 2.34.2-r2 +2.34.2-r2 < 2.34.4-r2 +2.34.4-r2 < 2.34.5-r2 +2.34.5-r2 < 2.34.6-r2 +2.34.6-r2 < 2.34.7-r2 +2.34.7-r2 < 2.35.0-r0 +2.35.0-r0 < 2.35.1-r0 +2.35.1-r0 < 2.35.1-r1 +2.35.1-r1 < 2.35.1-r2 +2.35.1-r2 < 2.35.2-r0 +2.35.2-r0 < 2.35.2-r2 +2.35.2-r2 < 2.36.0-r0 +2.36.0-r0 < 2.36.0-r2 +2.36.0-r2 < 2.36.1-r0 +2.36.1-r0 < 2.36.1-r2 +2.36.1-r2 < 2.36.2-r2 +2.36.2-r2 < 2.36.3-r2 +2.36.3-r2 < 2.36.4-r2 +2.36.4-r2 < 2.36.5-r2 +2.36.5-r2 < 2.37.0-r0 +2.37.0-r0 < 2.37.1-r0 +2.37.1-r0 < 2.37.1-r1 +2.37.1-r1 < 2.37.3-r0 +2.37.3-r0 < 2.37.3-r1 +2.37.3-r1 < 2.38.0-r0 +2.38.0-r0 < 2.38.0-r1 +2.38.0-r1 < 2.38.1-r0 +2.38.1-r0 < 2.38.2-r0 +2.38.2-r0 < 2.38.3-r0 +2.38.3-r0 < 2.38.3-r1 +2.38.3-r1 < 2.38.4-r0 +2.38.4-r0 < 2.38.4-r1 +2.38.4-r1 < 2.39.0-r0 +2.39.0-r0 < 2.39.1-r0 +2.39.1-r0 < 2.39.1-r1 +2.39.1-r1 < 2.39.1-r2 +2.39.1-r2 < 2.39.1-r3 +2.39.1-r3 < 2.39.1-r4 +2.39.1-r4 < 2.39.2-r0 +2.39.2-r0 < 2.40.0-r0 +2.40.0-r0 < 2.40.0-r1 +1.6.10-r1 < 1.6.11-r0 +1.6.12-r0 < 1.6.13-r0 +1.6.13-r0 < 1.6.14-r0 +1.6.14-r0 < 1.6.16-r0 +1.6.16-r0 < 1.6.17-r0 +1.6.17-r0 < 1.6.17-r1 +1.6.17-r1 < 1.6.17-r2 +1.6.17-r2 < 1.6.17-r3 +1.6.17-r3 < 1.6.17-r4 +1.6.17-r4 < 1.6.17-r5 +1.6.17-r5 < 1.6.17-r6 +1.6.17-r6 < 1.7.0-r0 +4.64-r0 < 4.64-r1 +4.64-r1 < 4.69-r0 +4.69-r0 < 4.69-r1 +4.69-r1 < 4.69-r2 +4.69-r2 < 4.72-r0 +4.72-r0 < 4.81-r0 +4.81-r0 < 4.87-r0 +4.87-r0 < 4.89-r0 +4.89-r0 < 4.90-r0 +4.90-r0 < 4.90-r1 +4.90-r1 < 4.91-r0 +4.91-r0 < 4.93-r0 +4.93-r0 < 4.93-r1 +4.93-r1 < 4.94-r0 +4.94-r0 < 4.94-r1 +4.94-r1 < 4.95-r0 +4.95-r0 < 4.96-r0 +4.96-r0 < 4.99-r0 +4.99-r0 < 4.99-r1 +4.99-r1 < 4.99-r2 +4.99-r2 < 4.101-r0 +4.101-r0 < 4.101-r1 +4.101-r1 < 4.101-r2 +4.101-r2 < 4.101-r3 +4.101-r3 < 5.9-r0 +5.9-r0 < 5.10-r0 +5.10-r0 < 5.11-r0 +5.11-r0 < 5.11-r1 +5.11-r1 < 5.13-r0 +5.13-r0 < 5.13-r1 +5.13-r1 < 5.14-r0 +5.14-r0 < 5.16-r0 +5.16-r0 < 5.18-r0 +5.18-r0 < 5.19-r0 +5.19-r0 < 5.20-r0 +5.20-r0 < 5.21-r0 +5.21-r0 < 5.22-r0 +5.22-r0 < 5.23-r0 +5.23-r0 < 5.24-r0 +5.24-r0 < 5.25-r0 +5.25-r0 < 5.26-r0 +5.26-r0 < 5.27-r0 +5.27-r0 < 5.28-r0 +5.28-r0 < 5.30-r0 +5.30-r0 < 5.30-r1 +5.30-r1 < 5.31-r0 +5.31-r0 < 5.31-r1 +5.31-r1 < 5.32-r0 +5.32-r0 < 5.32-r1 +5.32-r1 < 5.33-r0 +5.33-r0 < 5.33-r1 +5.33-r1 < 5.34-r0 +5.34-r0 < 5.34-r1 +5.34-r1 < 5.36-r0 +5.36-r0 < 5.36-r1 +5.36-r1 < 5.37-r0 +5.37-r0 < 5.37-r1 +5.37-r1 < 5.38-r0 +5.38-r0 < 5.38-r1 +5.38-r1 < 5.39-r0 +5.39-r0 < 5.39-r1 +5.39-r1 < 5.40-r0 +5.40-r0 < 5.40-r1 +5.40-r1 < 5.41-r0 +5.41-r0 < 5.41-r1 +5.41-r1 < 5.42-r0 +5.42-r0 < 5.42-r1 +5.42-r1 < 5.43-r0 +5.43-r0 < 5.43-r1 +5.43-r1 < 5.44-r0 +5.44-r0 < 5.44-r1 +5.44-r1 < 5.44-r2 +5.44-r2 < 5.44-r3 +5.44-r3 < 5.45-r0 +5.45-r0 < 5.46-r0 +5.46-r0 < 5.47-r0 +5.47-r0 < 5.47-r1 +5.47-r1 < 5.47-r2 +5.47-r2 < 5.47-r3 +5.47-r3 < 5.48-r0 +5.48-r0 < 5.48-r3 +5.48-r3 < 5.49-r0 +5.49-r0 < 5.49-r1 +5.49-r1 < 5.49-r2 +5.49-r2 < 5.50-r0 +5.50-r0 < 5.50-r1 +5.50-r1 < 5.50-r2 +5.50-r2 < 5.50-r3 +5.50-r3 < 5.50-r4 +5.50-r4 < 5.51-r0 +5.51-r0 < 5.51-r4 +5.51-r4 < 5.52-r0 +5.52-r0 < 5.52-r4 +5.52-r4 < 5.53-r0 +5.53-r0 < 5.53-r4 +5.53-r4 < 5.54-r4 +0.8.4-r0 < 0.8.4-r1 +0.8.4-r1 < 0.8.5-r0 +0.8.5-r0 < 0.8.6-r0 +0.8.6-r2 < 0.8.7-r0 +0.8.7-r0 < 0.8.8-r0 +0.8.8-r0 < 0.9.0-r0 +0.9.0-r0 < 0.9.1-r0 +0.9.1-r0 < 0.9.1-r1 +0.9.1-r1 < 0.9.1-r2 +0.9.1-r2 < 0.9.2-r0 +0.9.2-r0 < 0.9.2-r1 +0.9.2-r1 < 0.9.2-r2 +0.9.2-r2 < 0.9.2-r3 +0.9.2-r3 < 0.9.3-r0 +0.9.3-r0 < 0.9.3-r1 +0.9.3-r1 < 0.9.4-r0 +0.9.4-r0 < 0.9.4-r1 +0.9.4-r1 < 0.9.6-r0 +0.9.6-r0 < 0.9.6-r1 +0.9.6-r1 < 0.9.9-r0 +0.9.9-r0 < 0.9.10-r0 +0.9.10-r2 < 0.9.10-r3 +0.9.10-r3 < 0.9.11-r0 +0.9.11-r0 < 0.9.12-r0 +0.9.12-r1 < 0.9.12-r2 +0.9.12-r2 < 0.9.12-r3 +0.9.12-r3 < 0.9.13-r0 +0.10.2-r1 < 0.10.2-r2 +0.10.2-r2 < 0.10.2-r3 +0.10.2-r3 < 0.10.2-r4 +0.10.2-r4 < 0.10.2-r5 +0.10.2-r5 < 1.0.2-r5 +1.0.2-r5 < 1.0.3-r5 +1.0.3-r5 < 1.0.4-r5 +1.0.4-r5 < 1.0.5-r5 +1.0.5-r5 < 1.0.6-r5 +1.0.6-r5 < 1.1.0-r5 +1.1.0-r5 < 1.1.1-r5 +1.1.1-r5 < 1.1.2-r5 +1.1.2-r5 < 1.1.3-r5 +1.1.3-r5 < 1.1.4-r5 +1.1.4-r5 < 1.2.0-r5 +1.2.0-r5 < 1.2.1-r5 +1.2.1-r5 < 1.2.2-r5 +1.2.2-r5 < 1.2.3-r5 +1.2.3-r5 < 1.2.4-r5 +1.2.4-r5 < 1.2.5-r5 +1.2.5-r5 < 1.2.6-r5 +1.2.6-r5 < 1.2.7-r5 +1.2.7-r5 < 1.2.8-r5 +1.2.8-r5 < 1.2.9-r5 +1.2.9-r5 < 1.2.10-r5 +1.2.10-r5 < 1.2.11-r5 +1.2.11-r5 < 1.2.12-r5 +1.2.12-r5 < 1.2.13-r5 +1.2.13-r5 < 1.2.14-r5 +1.2.14-r5 < 1.2.15-r5 +1.2.15-r5 < 1.2.16-r5 +1.2.16-r5 < 1.2.17-r5 +1.2.17-r5 < 1.2.18-r5 +1.2.18-r5 < 1.2.19-r5 +1.2.19-r5 < 1.2.20-r5 +1.2.20-r5 < 1.2.21-r5 +1.2.21-r5 < 1.3.1-r5 +1.3.1-r5 < 1.3.2-r5 +1.3.2-r5 < 1.3.3-r5 +1.3.3-r5 < 1.3.5-r5 +1.3.5-r5 < 2.0.0-r5 +2.0.0-r5 < 2.1.0-r5 +2.1.0-r5 < 2.2.0-r5 +2.2.0-r5 < 2.3.0-r5 +2.3.0-r5 < 2.5.0-r5 +2.5.0-r5 < 3.0.0-r5 +3.0.0-r5 < 3.1.0-r5 +3.1.0-r5 < 3.2.0-r5 +3.2.0-r5 < 3.3.0-r5 +3.3.0-r5 < 3.4.0-r5 +3.4.0-r5 < 3.5.0-r5 +3.5.0-r5 < 3.6.0-r5 +3.6.0-r5 < 3.7.0-r5 +3.7.0-r5 < 3.8.0-r5 +3.8.0-r5 < 3.9.0-r5 +3.9.0-r5 < 3.10.0-r5 +3.10.0-r5 < 4.0.0-r5 +4.0.0-r5 < 4.1.0-r5 +4.1.0-r5 < 4.2.0-r5 +4.2.0-r5 < 4.3.0-r5 +4.3.0-r5 < 4.4.0-r5 +4.4.0-r5 < 4.5.0-r5 +4.5.0-r5 < 4.6.0-r5 +4.6.0-r5 < 4.10.0-r5 +4.10.0-r5 < 5.0.0-r5 +5.0.0-r5 < 5.1.0-r5 +5.1.0-r5 < 5.2.0-r5 +5.2.0-r5 < 5.3.0-r5 +5.3.0-r5 < 5.4.0-r5 +5.4.0-r5 < 5.5.0-r5 +5.5.0-r5 < 5.6.0-r5 +5.6.0-r5 < 5.7.0-r5 +5.7.0-r5 < 5.8.0-r5 +5.8.0-r5 < 5.9.0-r5 +5.9.0-r5 < 5.10.0-r5 +5.10.0-r5 < 6.0.0-r5 +6.0.0-r5 < 6.1.0-r5 +6.1.0-r5 < 6.2.0-r5 +6.2.0-r5 < 6.3.0-r5 +6.3.0-r5 < 6.5.0-r5 +1.6.9_p17-r1 < 1.7.0-r1 +1.7.0-r1 < 1.7.1-r1 +1.7.2-r1 < 1.7.2_p1-r1 +1.7.2_p1-r1 < 1.7.2_p2-r1 +1.7.2_p2-r1 < 1.7.2_p4-r1 +1.7.2_p4-r1 < 1.7.2_p5-r1 +1.7.2_p5-r1 < 1.7.2_p6-r1 +1.7.2_p6-r1 < 1.7.2_p7-r1 +1.7.2_p7-r1 < 1.7.3-r1 +1.7.3-r1 < 1.7.4_p2-r1 +1.7.4_p2-r1 < 1.7.4_p3-r1 +1.7.4_p3-r1 < 1.7.4_p4-r1 +1.7.4_p4-r1 < 1.7.4_p5-r1 +1.7.4_p5-r1 < 1.7.4p6-r1 +1.7.4p6-r1 < 1.8.0-r1 +1.8.0-r1 < 1.8.1-r1 +1.8.1-r1 < 1.8.1p1-r1 +1.8.1p1-r1 < 1.8.2-r1 +1.8.2-r1 < 1.8.3-r1 +1.8.3-r1 < 1.8.3_p1-r1 +1.8.3_p1-r1 < 1.8.3_p2-r1 +1.8.3_p2-r1 < 1.8.4-r1 +1.8.4-r1 < 1.8.4_p1-r1 +1.8.4_p1-r1 < 1.8.4_p2-r1 +1.8.4_p2-r1 < 1.8.4_p4-r1 +1.8.4_p4-r1 < 1.8.5_p1-r1 +1.8.5_p1-r1 < 1.8.5_p2-r1 +1.8.5_p2-r1 < 1.8.5_p3-r1 +1.8.5_p3-r1 < 1.8.6-r1 +1.8.6-r1 < 1.8.6_p1-r1 +1.8.6_p1-r1 < 1.8.6_p3-r1 +1.8.6_p3-r1 < 1.8.6_p4-r1 +1.8.6_p4-r1 < 1.8.6_p5-r1 +1.8.6_p5-r1 < 1.8.6_p6-r1 +1.8.6_p6-r1 < 1.8.6_p7-r1 +1.8.6_p7-r1 < 1.8.6_p8-r1 +1.8.6_p8-r1 < 1.8.7-r1 +1.8.7-r1 < 1.8.8-r1 +1.8.8-r1 < 1.8.9_p4-r1 +1.8.9_p4-r1 < 1.8.9_p5-r1 +1.8.9_p5-r1 < 1.8.10-r1 +1.8.10-r1 < 1.8.10_p1-r1 +1.8.10_p1-r1 < 1.8.10_p2-r1 +1.8.10_p2-r1 < 1.8.10_p3-r1 +1.8.10_p3-r1 < 1.8.11_p2-r1 +1.8.11_p2-r1 < 1.8.12-r1 +1.8.12-r1 < 1.8.13-r1 +1.8.13-r1 < 1.8.14_p3-r1 +1.8.14_p3-r1 < 1.8.15-r1 +1.8.15-r1 < 1.8.16-r1 +1.8.16-r1 < 1.8.17-r1 +1.8.17-r1 < 1.8.17_p1-r1 +1.8.17_p1-r1 < 1.8.18-r1 +1.8.18-r1 < 1.8.18_p1-r1 +1.8.18_p1-r1 < 1.8.19_p1-r1 +1.8.19_p1-r1 < 1.8.19_p2-r1 +1.8.19_p2-r1 < 1.8.20_p1-r1 +1.8.20_p1-r1 < 1.8.20_p2-r1 +1.8.20_p2-r1 < 1.8.21_p2-r1 +1.8.21_p2-r1 < 1.8.22-r1 +1.8.22-r1 < 1.8.23-r1 +1.8.23-r1 < 1.8.25_p1-r1 +1.8.25_p1-r1 < 1.8.27-r1 +1.8.27-r1 < 1.8.28-r1 +1.8.28-r1 < 1.8.28p1-r1 +1.8.28p1-r1 < 1.8.29-r1 +1.8.29-r1 < 1.8.30-r1 +1.8.30-r1 < 1.8.31-r1 +1.8.31-r1 < 1.8.31p1-r1 +1.8.31p1-r1 < 1.9.0-r1 +1.9.0-r1 < 1.9.1-r1 +1.9.1-r1 < 1.9.3-r1 +1.9.3-r1 < 1.9.3_p1-r1 +1.9.3_p1-r1 < 1.9.4-r1 +1.9.4-r1 < 1.9.4p2-r1 +1.9.4p2-r1 < 1.9.5-r1 +1.9.5-r1 < 1.9.5p1-r1 +1.9.5p1-r1 < 1.9.5p2-r1 +1.9.5p2-r1 < 1.9.6-r1 +1.9.6-r1 < 1.9.6_p1-r1 +1.9.6_p1-r1 < 1.9.7_p1-r1 +1.9.7_p1-r1 < 1.9.7_p2-r1 +1.9.7_p2-r1 < 1.9.8-r1 +1.9.8-r1 < 1.9.8_p1-r1 +1.9.8_p1-r1 < 1.9.8_p2-r1 +1.9.8_p2-r1 < 1.9.12-r1 +6.95-r0 < 7.0-r0 +7.0-r0 < 7.1-r0 +7.1-r0 < 7.1.1-r0 +7.1.1-r0 < 7.2-r0 +7.2-r0 < 7.2-r1 +7.2-r1 < 7.3-r0 +7.3-r1 < 7.4-r0 +7.4-r1 < 7.5-r0 +7.5-r0 < 7.5-r1 +7.5-r1 < 7.6-r0 +7.6-r0 < 7.6-r1 +7.6-r1 < 7.6-r2 +7.6-r2 < 7.7-r0 +7.7-r0 < 7.7-r2 +7.7-r2 < 7.8-r0 +7.8-r1 < 7.8-r2 +5.6-r0 < 5.7-r0 +5.7-r1 < 5.7-r2 +5.7-r2 < 5.7-r3 +5.7-r3 < 5.7-r4 +5.7-r4 < 5.8-r0 +5.8-r2 < 5.9-r0 +5.9-r4 < 6.0-r0 +6.0-r0 < 6.0-r1 +6.0-r1 < 6.0-r2 +6.0-r2 < 6.0-r3 +6.0-r3 < 6.0-r4 +6.0-r4 < 6.0-r5 +6.0-r5 < 6.0-r6 +6.0-r6 < 6.0-r7 +6.0-r7 < 6.0-r8 +6.0-r8 < 6.0_p20170701-r0 +6.0_p20170701-r0 < 6.0_p20170701-r1 +6.0_p20170701-r1 < 6.0_p20170701-r7 +6.0_p20170701-r7 < 6.0_p20170701-r8 +6.0_p20170701-r8 < 6.0_p20170930-r0 +6.0_p20170930-r0 < 6.0_p20170930-r7 +6.0_p20170930-r7 < 6.0_p20170930-r8 +6.0_p20170930-r8 < 6.0_p20171125-r0 +6.0_p20171125-r0 < 6.0_p20180121-r0 +6.0_p20180121-r0 < 6.0_p20180121-r1 +6.0_p20180121-r1 < 6.1-r1 +6.1-r1 < 6.1_p20180818-r1 +6.1_p20180818-r1 < 6.1_p20190105-r1 +6.1_p20190105-r1 < 6.1_p20190420-r1 +6.1_p20190420-r1 < 6.1_p20190518-r1 +6.1_p20190518-r1 < 6.1_p20190817-r1 +6.1_p20190817-r1 < 6.1_p20190831-r1 +6.1_p20190831-r1 < 6.1_p20190914-r1 +6.1_p20190914-r1 < 6.1_p20191005-r1 +6.1_p20191005-r1 < 6.1_p20191012-r1 +6.1_p20191012-r1 < 6.1_p20191019-r1 +6.1_p20191019-r1 < 6.1_p20191116-r1 +6.1_p20191116-r1 < 6.1_p20191123-r1 +6.1_p20191123-r1 < 6.1_p20191130-r1 +6.1_p20191130-r1 < 6.1_p20191221-r1 +6.1_p20191221-r1 < 6.1_p20191228-r1 +6.1_p20191228-r1 < 6.1_p20200104-r1 +6.1_p20200104-r1 < 6.1_p20200111-r1 +6.1_p20200111-r1 < 6.1_p20200118-r1 +6.1_p20200118-r1 < 6.2_p20200222-r1 +6.2_p20200222-r1 < 6.2_p20200229-r1 +6.2_p20200229-r1 < 6.2_p20200301-r1 +6.2_p20200301-r1 < 6.2_p20200308-r1 +6.2_p20200308-r1 < 6.2_p20200314-r1 +6.2_p20200314-r1 < 6.2_p20200321-r1 +6.2_p20200321-r1 < 6.2_p20200328-r1 +6.2_p20200328-r1 < 6.2_p20200404-r1 +6.2_p20200404-r1 < 6.2_p20200411-r1 +6.2_p20200411-r1 < 6.2_p20200418-r1 +6.2_p20200418-r1 < 6.2_p20200425-r1 +6.2_p20200425-r1 < 6.2_p20200502-r1 +6.2_p20200502-r1 < 6.2_p20200509-r1 +6.2_p20200509-r1 < 6.2_p20200516-r1 +6.2_p20200516-r1 < 6.2_p20200523-r1 +6.2_p20200523-r1 < 6.2_p20200531-r1 +6.2_p20200531-r1 < 6.2_p20200606-r1 +6.2_p20200606-r1 < 6.2_p20200613-r1 +6.2_p20200613-r1 < 6.2_p20200627-r1 +6.2_p20200627-r1 < 6.2_p20200704-r1 +6.2_p20200704-r1 < 6.2_p20200711-r1 +6.2_p20200711-r1 < 6.2_p20200718-r1 +6.2_p20200718-r1 < 6.2_p20200725-r1 +6.2_p20200725-r1 < 6.2_p20200801-r1 +6.2_p20200801-r1 < 6.2_p20200817-r1 +6.2_p20200817-r1 < 6.2_p20200822-r1 +6.2_p20200822-r1 < 6.2_p20200829-r1 +6.2_p20200829-r1 < 6.2_p20200906-r1 +6.2_p20200906-r1 < 6.2_p20200918-r1 +6.2_p20200918-r1 < 6.2_p20200926-r1 +6.2_p20200926-r1 < 6.2_p20201003-r1 +6.2_p20201003-r1 < 6.2_p20201010-r1 +6.2_p20201010-r1 < 6.2_p20201017-r1 +6.2_p20201017-r1 < 6.2_p20201024-r1 +6.2_p20201024-r1 < 6.2_p20201031-r1 +6.2_p20201031-r1 < 6.2_p20201107-r1 +6.2_p20201107-r1 < 6.2_p20201114-r1 +6.2_p20201114-r1 < 6.2_p20201121-r1 +6.2_p20201121-r1 < 6.2_p20201128-r1 +6.2_p20201128-r1 < 6.2_p20201205-r1 +6.2_p20201205-r1 < 6.2_p20201212-r1 +6.2_p20201212-r1 < 6.2_p20201219-r1 +6.2_p20201219-r1 < 6.2_p20201227-r1 +6.2_p20201227-r1 < 6.2_p20210102-r1 +6.2_p20210102-r1 < 6.2_p20210109-r1 +6.2_p20210109-r1 < 6.2_p20210116-r1 +6.2_p20210116-r1 < 6.2_p20210123-r1 +6.2_p20210123-r1 < 6.2_p20210130-r1 +6.2_p20210130-r1 < 6.2_p20210206-r1 +6.2_p20210206-r1 < 6.2_p20210213-r1 +6.2_p20210213-r1 < 6.2_p20210220-r1 +6.2_p20210220-r1 < 6.2_p20210227-r1 +6.2_p20210227-r1 < 6.2_p20210306-r1 +6.2_p20210306-r1 < 6.2_p20210313-r1 +6.2_p20210313-r1 < 6.2_p20210320-r1 +6.2_p20210320-r1 < 6.2_p20210327-r1 +6.2_p20210327-r1 < 6.2_p20210403-r1 +6.2_p20210403-r1 < 6.2_p20210417-r1 +6.2_p20210417-r1 < 6.2_p20210418-r1 +6.2_p20210418-r1 < 6.2_p20210424-r1 +6.2_p20210424-r1 < 6.2_p20210501-r1 +6.2_p20210501-r1 < 6.2_p20210508-r1 +6.2_p20210508-r1 < 6.2_p20210515-r1 +6.2_p20210515-r1 < 6.2_p20210522-r1 +6.2_p20210522-r1 < 6.2_p20210605-r1 +6.2_p20210605-r1 < 6.2_p20210612-r1 +6.2_p20210612-r1 < 6.2_p20210619-r1 +6.2_p20210619-r1 < 6.2_p20210626-r1 +6.2_p20210626-r1 < 6.2_p20210703-r1 +6.2_p20210703-r1 < 6.2_p20210710-r1 +6.2_p20210710-r1 < 6.2_p20210724-r1 +6.2_p20210724-r1 < 6.2_p20210731-r1 +6.2_p20210731-r1 < 6.2_p20210807-r1 +6.2_p20210807-r1 < 6.2_p20210814-r1 +6.2_p20210814-r1 < 6.2_p20210821-r1 +6.2_p20210821-r1 < 6.2_p20210828-r1 +6.2_p20210828-r1 < 6.2_p20210904-r1 +6.2_p20210904-r1 < 6.2_p20210905-r1 +6.2_p20210905-r1 < 6.2_p20210911-r1 +6.2_p20210911-r1 < 6.2_p20210925-r1 +6.2_p20210925-r1 < 6.2_p20211002-r1 +6.2_p20211002-r1 < 6.2_p20211009-r1 +6.2_p20211009-r1 < 6.2_p20211017-r1 +6.2_p20211017-r1 < 6.3_p20211026-r1 +6.3_p20211026-r1 < 6.3_p20211030-r1 +6.3_p20211030-r1 < 6.3_p20211106-r1 +6.3_p20211106-r1 < 6.3_p20211113-r1 +6.3_p20211113-r1 < 6.3_p20211115-r1 +6.3_p20211115-r1 < 6.3_p20211120-r1 +6.3_p20211120-r1 < 6.3_p20211127-r1 +6.3_p20211127-r1 < 6.3_p20211204-r1 +6.3_p20211204-r1 < 6.3_p20211211-r1 +6.3_p20211211-r1 < 6.3_p20211219-r1 +6.3_p20211219-r1 < 6.3_p20211225-r1 +6.3_p20211225-r1 < 6.3_p20220101-r1 +6.3_p20220101-r1 < 6.3_p20220115-r1 +6.3_p20220115-r1 < 6.3_p20220129-r1 +6.3_p20220129-r1 < 6.3_p20220212-r1 +6.3_p20220212-r1 < 6.3_p20220219-r1 +6.3_p20220219-r1 < 6.3_p20220226-r1 +6.3_p20220226-r1 < 6.3_p20220305-r1 +6.3_p20220305-r1 < 6.3_p20220312-r1 +6.3_p20220312-r1 < 6.3_p20220319-r1 +6.3_p20220319-r1 < 6.3_p20220402-r1 +6.3_p20220402-r1 < 6.3_p20220416-r1 +6.3_p20220416-r1 < 6.3_p20220423-r1 +6.3_p20220423-r1 < 6.3_p20220521-r1 +6.3_p20220521-r1 < 6.3_p20220604-r1 +6.3_p20220604-r1 < 6.3_p20220612-r1 +6.3_p20220612-r1 < 6.3_p20220625-r1 +6.3_p20220625-r1 < 6.3_p20220709-r1 +6.3_p20220709-r1 < 6.3_p20220724-r1 +6.3_p20220724-r1 < 6.3_p20220729-r1 +6.3_p20220729-r1 < 6.3_p20220806-r1 +6.3_p20220806-r1 < 6.3_p20220813-r1 +6.3_p20220813-r1 < 6.3_p20220820-r1 +6.3_p20220820-r1 < 6.3_p20220827-r1 +6.3_p20220827-r1 < 6.3_p20220903-r1 +6.3_p20220903-r1 < 6.3_p20220917-r1 +6.3_p20220917-r1 < 6.3_p20220924-r1 +6.3_p20220924-r1 < 6.3_p20221001-r1 +6.3_p20221001-r1 < 6.3_p20221008-r1 +6.3_p20221008-r1 < 6.3_p20221023-r1 +6.3_p20221023-r1 < 6.3_p20221029-r1 +6.3_p20221029-r1 < 6.3_p20221105-r1 +6.3_p20221105-r1 < 6.3_p20221112-r1 +6.3_p20221112-r1 < 6.3_p20221119-r1 +6.3_p20221119-r1 < 6.3_p20221126-r1 +6.3_p20221126-r1 < 6.3_p20221203-r1 +6.3_p20221203-r1 < 6.3_p20221210-r1 +6.3_p20221210-r1 < 6.3_p20221217-r1 +6.3_p20221217-r1 < 6.3_p20221224-r1 +6.3_p20221224-r1 < 6.4_p20221231-r1 +6.4_p20221231-r1 < 6.4_p20230107-r1 +6.4_p20230107-r1 < 6.4_p20230114-r1 +6.4_p20230114-r1 < 6.4_p20230121-r1 +6.4_p20230121-r1 < 6.4_p20230128-r1 +6.4_p20230128-r1 < 6.4_p20230211-r1 +6.4_p20230211-r1 < 6.4_p20230218-r1 +6.4_p20230218-r1 < 6.4_p20230225-r1 +6.4_p20230225-r1 < 6.4_p20230311-r1 +6.4_p20230311-r1 < 6.4_p20230401-r1 +6.4_p20230401-r1 < 6.4_p20230408-r1 +1.8-r0 < 2.0-r0 +2.0-r0 < 2.1-r0 +2.1-r0 < 2.2-r0 +2.2-r0 < 2.4-r0 +2.4-r0 < 2.5-r0 +2.5-r1 < 2.6-r0 +2.6-r2 < 2.8-r0 +2.8-r1 < 2.9-r0 +2.9-r1 < 2.12-r0 +2.12-r0 < 2.12-r1 +2.12-r1 < 2.13-r0 +2.13-r0 < 2.13-r1 +2.13-r1 < 2.14-r0 +2.14-r0 < 2.14-r1 +2.14-r1 < 3.1-r0 +3.1-r1 < 3.2-r0 +3.2-r0 < 3.2-r1 +3.2-r1 < 3.3-r0 +3.3-r1 < 3.4-r0 +3.4-r1 < 3.6-r0 +3.6-r0 < 3.6-r1 +3.6-r1 < 4.1-r0 +4.1-r1 < 4.2-r0 +4.4-r1 < 4.5-r0 +4.5-r1 < 4.6-r0 +4.6-r1 < 4.7-r0 +4.7-r0 < 4.7-r1 +4.7-r1 < 4.8-r0 +4.10-r1 < 4.12-r0 +4.12-r1 < 4.12-r2 +4.12-r2 < 4.13-r0 +4.13-r0 < 4.13-r2 +4.13-r2 < 4.14-r0 +4.14-r0 < 4.15.0-r0 +4.15.0-r0 < 4.16.0-r0 +4.16.0-r1 < 4.17.0-r1 +4.17.0-r1 < 4.18.0-r1 +3.6.10-r0 < 3.6.15-r0 +3.6.15-r0 < 3.6.22-r0 +3.6.22-r0 < 3.6.22-r1 +3.6.22-r1 < 3.6.22-r2 +3.6.22-r2 < 3.7.0-r2 +3.7.0-r2 < 3.7.0.1-r2 +3.7.0.1-r2 < 3.7.1-r2 +3.7.1-r2 < 3.7.2-r2 +3.7.2-r2 < 3.7.3-r2 +3.7.3-r2 < 3.7.4-r2 +3.7.4-r2 < 3.7.5-r2 +3.7.5-r2 < 3.7.6-r2 +3.7.6-r2 < 3.7.6.1-r2 +3.7.6.1-r2 < 3.7.6.2-r2 +3.7.6.2-r2 < 3.7.6.3-r2 +3.7.6.3-r2 < 3.7.7-r2 +3.7.7-r2 < 3.7.7.1-r2 +3.7.7.1-r2 < 3.7.8-r2 +3.7.8-r2 < 3.7.9-r2 +3.7.9-r2 < 3.7.10-r2 +3.7.10-r2 < 3.7.11-r2 +3.7.11-r2 < 3.7.12-r2 +3.7.12-r2 < 3.7.12.1-r2 +3.7.12.1-r2 < 3.7.13-r2 +3.7.13-r2 < 3.7.14-r2 +3.7.14-r2 < 3.7.14.1-r2 +3.7.14.1-r2 < 3.7.15-r2 +3.7.15-r2 < 3.7.15.1-r2 +3.7.15.1-r2 < 3.7.15.2-r2 +3.7.15.2-r2 < 3.7.16.1-r2 +3.7.16.1-r2 < 3.7.16.2-r2 +3.7.16.2-r2 < 3.7.17-r2 +3.7.17-r2 < 3.8.0-r2 +3.8.0-r2 < 3.8.0.1-r2 +3.8.0.1-r2 < 3.8.0.2-r2 +3.8.0.2-r2 < 3.8.1-r2 +3.8.1-r2 < 3.8.2-r2 +3.8.2-r2 < 3.8.3-r2 +3.8.3-r2 < 3.8.3.1-r2 +3.8.3.1-r2 < 3.8.4-r2 +3.8.4-r2 < 3.8.4.1-r2 +3.8.4.1-r2 < 3.8.4.2-r2 +3.8.4.2-r2 < 3.8.4.3-r2 +3.8.4.3-r2 < 3.8.5-r2 +3.8.5-r2 < 3.8.6-r2 +3.8.6-r2 < 3.8.7-r2 +3.8.7-r2 < 3.8.7.1-r2 +3.8.7.1-r2 < 3.8.7.2-r2 +3.8.7.2-r2 < 3.8.7.3-r2 +3.8.7.3-r2 < 3.8.7.4-r2 +3.8.7.4-r2 < 3.8.8.1-r2 +3.8.8.1-r2 < 3.8.8.2-r2 +3.8.8.2-r2 < 3.8.8.3-r2 +3.8.8.3-r2 < 3.8.9-r2 +3.8.9-r2 < 3.8.10-r2 +3.8.10-r2 < 3.8.10.1-r2 +3.8.10.1-r2 < 3.8.10.2-r2 +3.8.10.2-r2 < 3.8.11-r2 +3.8.11-r2 < 3.8.11.1-r2 +3.8.11.1-r2 < 3.9.0-r2 +3.9.0-r2 < 3.9.1-r2 +3.9.1-r2 < 3.9.2-r2 +3.9.2-r2 < 3.10.2-r2 +3.10.2-r2 < 3.11.0-r2 +3.11.0-r2 < 3.11.1-r2 +3.11.1-r2 < 3.12.0-r2 +3.12.0-r2 < 3.12.1-r2 +3.12.1-r2 < 3.12.2-r2 +3.12.2-r2 < 3.13.0-r2 +3.13.0-r2 < 3.14.1-r2 +3.14.1-r2 < 3.14.2-r2 +3.14.2-r2 < 3.15.0-r2 +3.15.0-r2 < 3.15.1-r2 +3.15.1-r2 < 3.15.2-r2 +3.15.2-r2 < 3.16.0-r2 +3.16.0-r2 < 3.16.2-r2 +3.16.2-r2 < 3.17.0-r2 +3.17.0-r2 < 3.18.0-r2 +3.18.0-r2 < 3.19.3-r2 +3.19.3-r2 < 3.20.0-r2 +3.20.0-r2 < 3.20.1-r2 +3.20.1-r2 < 3.21.0-r2 +3.21.0-r2 < 3.22.0-r2 +3.22.0-r2 < 3.23.0-r2 +3.23.0-r2 < 3.23.1-r0 +3.23.1-r0 < 3.23.1-r2 +3.23.1-r2 < 3.24.0-r0 +3.24.0-r0 < 3.24.0-r1 +3.24.0-r1 < 3.24.0-r2 +3.24.0-r2 < 3.25.3-r2 +3.25.3-r2 < 3.26.0-r0 +3.26.0-r0 < 3.26.0-r1 +3.26.0-r1 < 3.26.0-r2 +3.26.0-r2 < 3.26.0-r3 +3.26.0-r3 < 3.27.2-r0 +3.27.2-r0 < 3.27.2-r3 +3.27.2-r3 < 3.28.0-r0 +3.28.0-r0 < 3.28.0-r3 +3.28.0-r3 < 3.29.0-r0 +3.29.0-r0 < 3.29.0-r3 +3.29.0-r3 < 3.30.0-r0 +3.30.0-r0 < 3.30.0-r3 +3.30.0-r3 < 3.30.1-r0 +3.30.1-r0 < 3.30.1-r1 +3.30.1-r1 < 3.31.1-r0 +3.31.1-r0 < 3.31.1-r1 +3.31.1-r1 < 3.31.1-r2 +3.31.1-r2 < 3.31.1-r3 +3.31.1-r3 < 3.32.0-r0 +3.32.0-r0 < 3.32.0-r3 +3.32.0-r3 < 3.32.1-r0 +3.32.1-r0 < 3.32.2-r0 +3.32.2-r0 < 3.32.3-r0 +3.32.3-r0 < 3.33.0-r0 +3.33.0-r0 < 3.34.0-r0 +3.34.0-r0 < 3.34.0-r1 +3.34.0-r1 < 3.34.1-r0 +3.34.1-r0 < 3.34.1-r1 +3.34.1-r1 < 3.35.0-r0 +3.35.0-r0 < 3.35.2-r0 +3.35.2-r0 < 3.35.2-r1 +3.35.2-r1 < 3.35.3-r0 +3.35.3-r0 < 3.35.3-r1 +3.35.3-r1 < 3.35.4-r0 +3.35.4-r0 < 3.35.4-r1 +3.35.4-r1 < 3.35.5-r0 +3.35.5-r0 < 3.35.5-r1 +3.35.5-r1 < 3.36.0-r0 +3.36.0-r0 < 3.36.0-r1 +3.36.0-r1 < 3.37.0-r0 +3.37.0-r0 < 3.37.0-r1 +3.37.0-r1 < 3.37.1-r0 +3.37.1-r0 < 3.37.1-r1 +3.37.1-r1 < 3.37.2-r0 +3.37.2-r0 < 3.37.2-r1 +3.37.2-r1 < 3.38.0-r0 +3.38.0-r0 < 3.38.0-r1 +3.38.0-r1 < 3.38.2-r0 +3.38.2-r0 < 3.38.2-r1 +3.38.2-r1 < 3.38.3-r0 +3.38.3-r0 < 3.38.3-r1 +3.38.3-r1 < 3.38.4-r0 +3.38.4-r0 < 3.38.4-r1 +3.38.4-r1 < 3.38.5-r0 +3.38.5-r0 < 3.38.5-r1 +3.38.5-r1 < 3.39.0-r0 +3.39.0-r0 < 3.39.0-r1 +3.39.0-r1 < 3.39.1-r0 +3.39.1-r0 < 3.39.1-r1 +3.39.1-r1 < 3.39.2-r0 +3.39.2-r0 < 3.39.2-r1 +3.39.2-r1 < 3.39.3-r0 +3.39.3-r0 < 3.39.3-r1 +3.39.3-r1 < 3.39.4-r0 +3.39.4-r0 < 3.39.4-r1 +3.39.4-r1 < 3.40.0-r0 +3.40.0-r0 < 3.40.0-r1 +3.40.0-r1 < 3.40.1-r0 +3.40.1-r0 < 3.41.0-r0 +3.41.0-r0 < 3.41.0-r1 +3.41.0-r1 < 3.41.1-r1 +3.41.1-r1 < 3.41.2-r1 +1.2.1-r2 < 1.2.1-r3 +1.2.1-r3 < 1.2.1-r4 +1.2.1-r4 < 1.3.1-r0 +1.3.1-r2 < 1.3.1-r3 +1.3.1-r3 < 1.3.1-r4 +1.3.1-r4 < 1.3.1-r5 +1.3.1-r5 < 1.3.3-r0 +1.3.3-r0 < 1.4-r0 +1.4-r0 < 1.4-r1 +1.4-r1 < 1.4-r2 +1.4-r2 < 1.4-r3 +1.4-r3 < 1.4-r4 +1.4-r4 < 1.4-r5 +1.4-r5 < 1.4-r6 +1.4-r6 < 1.4-r7 +1.4-r7 < 1.4-r8 +1.4-r8 < 1.4-r9 +1.4-r9 < 1.4-r10 +1.4-r10 < 1.4-r11 +1.4-r11 < 1.5-r2 +1.5-r2 < 1.5.2-r3 +1.5.2-r3 < 1.5.2-r4 +1.5.2-r4 < 1.5.2-r5 +1.5.2-r5 < 1.5.2-r6 +1.5.2-r6 < 1.5.2-r7 +1.5.2-r7 < 1.5.2-r8 +1.5.2-r8 < 1.5.3-r0 +1.5.3-r0 < 1.5.3-r1 +1.5.3-r1 < 1.6_rc2-r1 +1.6_rc2-r1 < 7.1.0-r1 +7.1.0-r1 < 7.4.0-r1 +7.4.0-r1 < 7.5.0-r1 +7.5.0-r1 < 7.7.0-r1 +7.7.0-r1 < 7.7.1-r1 +7.7.1-r1 < 7.8.0-r1 +1.6.4-r0 < 1.7.2-r0 +1.7.3-r0 < 1.8.1-r0 +1.8.1-r1 < 1.9.0-r0 +1.9.0-r0 < 1.10.0-r0 +1.10.1-r0 < 1.12.1-r0 +1.12.1-r1 < 1.12.3-r0 +1.12.3-r0 < 1.13.1-r0 +1.13.2-r0 < 1.13.3-r0 +1.13.4-r0 < 1.13.6-r0 +1.13.6-r0 < 1.13.8-r0 +1.13.8-r0 < 1.14.1-r0 +1.14.1-r0 < 1.14.2-r0 +1.14.2-r0 < 1.14.3-r0 +1.14.3-r0 < 1.14.4-r0 +1.14.4-r0 < 1.15.1-r0 +1.15.1-r0 < 1.15.3-r0 +1.15.3-r0 < 1.15.4-r0 +1.15.4-r0 < 1.16.0-r0 +1.16.0-r1 < 1.17.0-r1 +1.17.0-r1 < 1.18.0-r1 +1.18.0-r1 < 1.18.1-r1 +1.18.1-r1 < 1.19.0-r1 +1.19.0-r1 < 1.20.0-r1 +1.20.0-r1 < 1.20.1-r1 +1.20.1-r1 < 1.21.0-r1 +1.21.0-r1 < 1.22.0-r1 +1.22.0-r1 < 1.22.1-r1 +1.22.1-r1 < 1.22.3-r1 +1.22.3-r1 < 1.22.4-r1 +1.22.4-r1 < 1.23.1-r1 +1.23.1-r1 < 1.23.3-r1 +1.23.3-r1 < 1.23.5-r1 +1.23.5-r1 < 1.23.6-r1 +1.23.6-r1 < 1.23.7-r1 +1.23.7-r1 < 1.23.8-r1 +1.23.8-r1 < 1.24.0-r1 +4.5.2-r0 < 4.6.1-r0 +4.6.1-r0 < 5.1.1-r0 +5.1.1-r0 < 5.1.1-r1 +5.1.1-r1 < 5.1.1-r2 +5.1.1-r2 < 5.1.1-r3 +5.1.1-r3 < 5.1.3-r0 +5.1.3-r0 < 5.2.0-r0 +5.2.0-r0 < 5.2.0-r1 +5.2.0-r1 < 5.2.0-r2 +5.2.0-r2 < 5.2.2-r0 +5.2.2-r0 < 5.3.0-r0 +5.3.0-r2 < 5.3.1-r0 +5.3.1-r2 < 5.3.2-r0 +5.3.2-r8 < 5.3.2-r9 +5.3.2-r9 < 5.3.2-r10 +5.3.2-r10 < 5.3.3-r0 +5.3.3-r0 < 5.3.3-r2 +5.3.3-r2 < 5.3.4-r0 +5.3.4-r0 < 5.3.4-r2 +5.3.5-r2 < 5.4.0-r0 +5.4.0-r2 < 5.5.0-r0 +5.5.0-r1 < 5.5.0-r2 +5.5.0-r2 < 5.5.1-r0 +5.5.1-r1 < 5.5.1-r2 +5.5.1-r2 < 5.5.2-r0 +5.5.2-r1 < 5.5.2-r2 +5.5.2-r2 < 5.5.3-r0 +5.5.3-r0 < 5.5.3-r1 +5.5.3-r1 < 5.5.3-r2 +5.5.3-r2 < 5.6.0-r0 +5.6.0-r0 < 5.6.0-r1 +5.6.0-r1 < 5.6.0-r2 +5.6.0-r2 < 5.6.1-r0 +5.6.1-r0 < 5.6.1-r2 +5.6.2-r1 < 5.6.2-r2 +5.6.2-r2 < 5.6.3-r0 +5.6.3-r0 < 5.6.3-r1 +5.6.3-r1 < 5.6.3-r2 +5.6.3-r2 < 5.7.0-r0 +5.7.0-r0 < 5.7.0-r2 +5.7.0-r2 < 5.7.1-r0 +5.7.1-r2 < 5.7.2-r0 +5.7.2-r2 < 5.8.0-r0 +5.8.0-r0 < 5.8.0-r1 +5.8.0-r1 < 5.8.0-r2 +5.8.0-r2 < 5.8.1-r0 +5.8.1-r0 < 5.8.1-r1 +5.8.1-r1 < 5.8.1-r2 +5.8.1-r2 < 5.8.2-r0 +5.8.2-r0 < 5.8.2-r2 +5.8.2-r2 < 5.8.3-r0 +5.8.3-r0 < 5.8.3-r2 +5.8.3-r2 < 5.8.4-r0 +5.8.4-r0 < 5.8.4-r1 +5.8.4-r1 < 5.8.4-r2 +5.8.4-r2 < 5.9.0-r0 +5.9.0-r0 < 5.9.0-r1 +5.9.0-r1 < 5.9.0-r2 +5.9.0-r2 < 5.9.1-r0 +5.9.1-r4 < 5.9.5-r0 +5.9.5-r0 < 5.9.5-r1 +5.9.5-r1 < 5.9.6-r0 +5.9.6-r0 < 5.9.7-r0 +5.9.7-r0 < 5.9.7-r1 +5.9.7-r1 < 5.9.8-r0 +5.9.8-r0 < 5.9.8-r1 +5.9.8-r1 < 5.9.9-r0 +5.9.9-r0 < 5.9.9-r1 +5.9.9-r1 < 5.9.10-r0 +5.9.10-r0 < 5.9.10-r1 +5.9.10-r1 < 5.9.10-r2 +5.9.10-r2 < 5.9.11-r0 +5.9.11-r0 < 5.9.11-r1 +0.8.8-r1 < 0.8.8-r2 +0.8.8-r2 < 1.0.0-r0 +1.0.0-r2 < 1.1.0-r0 +1.1.0-r2 < 1.2.0-r0 +0.15.1b-r0 < 0.15.1b-r1 +0.15.1b-r1 < 0.15.1b-r2 +0.15.1b-r2 < 0.15.1b-r3 +0.15.1b-r3 < 0.15.1b-r4 +0.15.1b-r4 < 0.15.1b-r5 +0.15.1b-r5 < 0.15.1b-r6 +0.15.1b-r6 < 0.15.1b-r7 +0.15.1b-r7 < 0.15.1b-r8 +0.15.1b-r8 < 0.16.1-r8 +3.1.1-r1 < 3.1.3-r0 +3.1.3-r0 < 3.1.3-r1 +3.1.3-r1 < 3.2.0-r0 +3.2.0-r1 < 3.2.4-r0 +3.2.4-r0 < 3.3.3-r0 +3.3.3-r1 < 3.3.4-r1 +3.3.4-r1 < 3.3.5-r0 +3.0.2-r0 < 4.1.0-r0 +4.1.0-r1 < 5.0.0-r0 +5.0.0-r0 < 5.0.1-r0 +5.0.1-r0 < 5.1.1-r0 +5.1.1-r0 < 5.1.2-r0 +5.1.2-r0 < 5.1.3-r0 +5.1.3-r0 < 6.0.0-r0 +6.0.0-r0 < 6.0.0-r1 +6.0.0-r1 < 6.0.0-r2 +2.0.1-r3 < 2.0.2-r0 +2.0.2-r1 < 2.0.2-r3 +2.0.2-r3 < 2.0.3-r3 +2.0.3-r3 < 2.0.4-r3 +1.6.0-r1 < 1.6.0-r2 +1.6.0-r2 < 1.6.0-r3 +1.6.0-r3 < 1.6.0-r4 +1.6.0-r4 < 1.6.1-r0 +1.6.1-r1 < 1.6.1-r2 +1.6.1-r2 < 1.6.1-r3 +1.6.1-r3 < 1.6.2-r0 +1.6.3-r1 < 1.7.0.901-r1 +1.7.0.901-r1 < 1.7.1-r0 +1.7.1-r0 < 1.7.3.901-r0 +1.7.3.901-r0 < 1.7.3.902-r0 +1.7.3.902-r0 < 1.7.4.901-r0 +1.7.4.901-r0 < 1.7.6-r0 +1.7.6-r1 < 1.7.6-r2 +1.7.6-r2 < 1.7.7-r0 +1.7.7-r1 < 1.9.0-r0 +1.9.0-r1 < 1.9.0.901-r0 +1.9.0.901-r0 < 1.9.1-r0 +1.9.2-r0 < 1.9.3-r0 +1.9.3-r0 < 1.9.3.901-r0 +1.9.3.901-r0 < 1.9.3.902-r0 +1.9.3.902-r0 < 1.9.4-r0 +1.9.4-r0 < 1.9.4-r1 +1.9.4-r1 < 1.10.0-r0 +1.10.0-r0 < 1.10.0.901-r0 +1.10.0.901-r0 < 1.10.0.902-r0 +1.10.0.902-r0 < 1.10.1-r0 +1.10.1-r0 < 1.10.1-r1 +1.10.1-r1 < 1.10.2-r0 +1.10.2-r0 < 1.10.3-r0 +1.10.3-r0 < 1.10.4-r0 +1.10.4-r0 < 1.11.0-r0 +1.11.0-r0 < 1.11.1-r0 +1.11.1-r0 < 1.11.1-r1 +1.11.1-r1 < 1.11.1.902-r0 +1.11.1.902-r0 < 1.11.2-r0 +1.11.2-r0 < 1.11.3-r0 +1.11.4-r1 < 1.12.0-r0 +1.12.0-r0 < 1.12.1-r0 +1.12.1-r1 < 1.12.1.902-r0 +1.12.1.902-r0 < 1.12.2-r0 +1.12.4-r0 < 1.13.0-r0 +1.13.0-r0 < 1.13.1-r0 +1.13.2-r2 < 1.14.0-r0 +1.14.0-r1 < 1.14.1-r0 +1.14.4-r0 < 1.14.5-r0 +1.14.5-r0 < 1.15.0-r0 +1.15.0-r1 < 1.15.1-r0 +1.15.2-r0 < 1.16.0-r0 +1.16.0-r2 < 1.16.1-r0 +1.16.1-r0 < 1.16.2-r0 +1.16.2-r0 < 1.16.2.901-r0 +1.16.2.901-r0 < 1.16.3-r0 +1.16.3-r0 < 1.17.1-r0 +1.17.1-r3 < 1.17.2-r0 +1.17.2-r1 < 1.17.2-r2 +1.17.2-r2 < 1.17.3-r0 +1.17.3-r0 < 1.17.4-r0 +1.17.4-r1 < 1.18.0-r0 +1.18.0-r0 < 1.18.1-r0 +1.18.1-r0 < 1.18.2-r0 +1.18.2-r0 < 1.18.3-r0 +1.18.3-r0 < 1.18.4-r0 +1.18.4-r4 < 1.19.3-r0 +1.19.3-r4 < 1.19.5-r0 +1.19.5-r0 < 1.19.5-r4 +1.19.5-r4 < 1.19.6-r0 +1.19.6-r0 < 1.19.6-r1 +1.19.6-r1 < 1.19.6-r2 +1.19.6-r2 < 1.19.6-r3 +1.19.6-r3 < 1.20.0-r0 +1.20.0-r0 < 1.20.0-r3 +1.20.0-r3 < 1.20.1-r0 +1.20.1-r0 < 1.20.1-r3 +1.20.1-r3 < 1.20.3-r0 +1.20.3-r0 < 1.20.3-r1 +1.20.3-r1 < 1.20.4-r0 +1.20.4-r0 < 1.20.4-r1 +1.20.4-r1 < 1.20.5-r0 +1.20.5-r0 < 1.20.5-r1 +1.20.5-r1 < 1.20.6-r0 +1.20.6-r0 < 1.20.6-r1 +1.20.6-r1 < 1.20.6-r2 +1.20.6-r2 < 1.20.7-r0 +1.20.7-r0 < 1.20.7-r1 +1.20.7-r1 < 1.20.7-r2 +1.20.7-r2 < 1.20.7-r3 +1.20.7-r3 < 1.20.7-r4 +1.20.7-r4 < 1.20.7-r5 +1.20.7-r5 < 1.20.8-r0 +1.20.8-r0 < 1.20.8-r1 +1.20.8-r1 < 1.20.8-r2 +1.20.8-r2 < 1.20.8-r3 +1.20.8-r3 < 1.20.9-r0 +1.20.9-r0 < 1.20.9-r1 +1.20.9-r1 < 1.20.10-r0 +2.1.5-r0 < 3.0.0-r0 +3.0.0-r1 < 3.0.0-r2 +3.0.0-r2 < 3.0.2-r0 +3.0.2-r2 < 3.0.2-r3 +3.0.2-r3 < 3.0.2-r4 +3.0.2-r4 < 3.0.2-r5 +3.0.2-r5 < 3.0.2-r6 +3.0.2-r6 < 3.0.2-r7 +3.0.2-r7 < 3.0.3-r0 +3.0.4-r4 < 3.0.5-r0 +3.0.5-r1 < 4.0.0-r0 +4.0.0-r0 < 4.0.0-r1 +4.0.0-r2 < 4.0.1-r0 +4.0.2-r1 < 4.0.2-r2 +4.0.2-r2 < 4.0.3-r0 +4.0.3-r1 < 4.1.0-r0 +4.1.2-r1 < 4.1.2-r2 +4.1.2-r2 < 4.1.2-r3 +4.1.2-r4 < 4.1.3-r0 +4.1.3-r1 < 5.1.2-r0 +5.1.2-r0 < 5.1.2-r1 +5.1.2-r1 < 5.1.3-r0 +5.1.3-r0 < 5.1.3-r1 +5.1.3-r1 < 5.2.0-r0 +5.2.0-r1 < 5.2.1-r0 +5.2.1-r0 < 6.0.0-r0 +6.0.0-r1 < 6.0.1-r0 +6.0.1-r1 < 6.0.2-r1 +6.0.2-r1 < 6.1.0-r0 +6.1.0-r0 < 6.1.0-r1 +6.1.0-r1 < 6.1.1-r0 +6.1.1-r0 < 6.1.1-r1 +6.1.1-r1 < 6.2.0-r0 +6.2.1-r0 < 6.3.0-r0 +6.3.0-r0 < 6.3.1-r0 +6.3.1-r0 < 6.3.1-r1 +6.3.1-r1 < 6.3.2-r0 +6.3.2-r0 < 6.3.2-r1 +6.3.2-r1 < 6.4.0-r0 +6.4.0-r0 < 6.4.0-r1 +6.4.0-r1 < 6.5.1-r0 +6.5.1-r0 < 6.5.1-r1 +6.5.1-r1 < 6.6.0-r0 +6.6.0-r0 < 6.6.0-r1 +6.6.0-r1 < 6.6.1-r0 +6.6.1-r0 < 6.6.1-r1 +6.6.1-r1 < 7.0.0-r0 +7.0.0-r0 < 7.0.0-r1 +7.0.0-r1 < 7.0.1-r0 +7.0.1-r0 < 7.0.1-r1 +7.0.1-r1 < 7.0.2-r0 +7.0.2-r0 < 7.1.0-r0 +7.1.0-r0 < 7.1.1-r0 +7.1.1-r0 < 7.2.0-r0 +7.2.0-r0 < 7.2.1-r0 +7.2.1-r0 < 7.3.0-r0 +7.3.0-r0 < 7.3.0-r1 +7.3.0-r1 < 7.3.1-r1 +1.0.19-r0 < 1.0.20-r0 +1.0.20-r0 < 1.0.21-r0 +1.0.21-r0 < 1.0.21-r1 +1.0.21-r1 < 1.0.21-r2 +1.0.21-r2 < 1.0.21-r3 +1.0.21-r3 < 1.0.22-r0 +1.0.22-r0 < 1.0.23-r0 +1.0.23-r0 < 1.0.23-r1 +1.0.23-r1 < 1.0.24-r0 +1.0.24-r0 < 1.0.24-r1 +1.0.24-r1 < 1.0.25-r0 +1.0.25-r0 < 1.0.25-r1 +1.0.25-r1 < 1.0.25-r2 +1.0.25-r2 < 1.0.25-r3 +1.0.25-r3 < 1.0.26-r0 +1.0.26-r0 < 1.0.26-r2 +1.0.26-r2 < 1.0.26-r3 +1.0.26-r3 < 1.0.27-r0 +1.0.27-r0 < 1.0.27-r3 +1.0.27-r3 < 1.0.28-r0 +1.0.28-r0 < 1.0.28-r1 +1.0.28-r1 < 1.0.28-r2 +1.0.28-r2 < 1.0.28-r3 +1.0.28-r3 < 1.0.28-r4 +1.0.28-r4 < 1.0.28-r5 +1.0.28-r5 < 1.0.28-r6 +1.0.28-r6 < 1.0.28-r7 +1.5-r0 < 1.6-r0 +1.6-r0 < 1.6.1-r0 +1.6.1-r1 < 1.6.3-r0 +1.6.3-r2 < 1.7-r0 +1.7-r2 < 1.7.1-r0 +1.7.2-r0 < 1.8-r0 +1.8-r0 < 1.9.1-r0 +1.9.1-r1 < 1.10-r0 +1.10-r0 < 1.11-r0 +1.11-r1 < 1.11.1-r1 +0.6.10-r0 < 0.6.10-r1 +0.6.10-r1 < 0.6.10-r2 +0.6.10-r2 < 0.7.3-r0 +1.1-r0 < 2.0-r0 +2.0-r1 < 2.1-r0 +2.3-r0 < 2.4-r0 +2.4-r1 < 2.5-r0 +2.6-r5 < 2.7-r0 +2.7-r0 < 2.7-r5 +2.7-r5 < 2.8-r0 +2.8-r0 < 2.8-r5 +2.8-r5 < 2.9-r0 +2.46-r0 < 2.47-r0 +2.47-r0 < 2.49-r0 +2.49-r0 < 2.50-r0 +2.50-r0 < 2.50-r1 +2.50-r1 < 2.51-r0 +2.51-r0 < 2.52-r0 +2.52-r0 < 2.52-r1 +2.52-r1 < 2.55-r0 +2.55-r0 < 2.57-r0 +2.57-r0 < 2.58-r0 +2.58-r0 < 2.59-r0 +2.59-r0 < 2.59-r1 +2.59-r1 < 2.60-r0 +2.60-r0 < 2.61-r0 +2.61-r0 < 2.62-r0 +2.62-r0 < 2.63-r0 +2.63-r0 < 2.64-r0 +2.64-r0 < 2.65-r0 +2.65-r0 < 2.66-r0 +2.66-r0 < 2.66-r1 +2.66-r1 < 2.66-r2 +2.66-r2 < 2.67-r0 +2.67-r0 < 2.68-r0 +2.68-r0 < 2.69-r0 +2.69-r0 < 2.70-r0 +2.70-r0 < 2.71-r0 +2.71-r0 < 2.72-r0 +2.72-r0 < 2.72-r1 +2.72-r1 < 2.73-r0 +2.73-r0 < 2.75-r0 +2.75-r0 < 2.75-r1 +2.75-r1 < 2.75-r2 +2.75-r2 < 2.76-r0 +2.76-r0 < 2.76-r1 +2.76-r1 < 2.76-r2 +2.76-r2 < 2.76-r3 +2.76-r3 < 2.76-r4 +2.76-r4 < 2.77-r0 +2.77-r0 < 2.77-r4 +2.77-r4 < 2.78-r0 +2.78-r0 < 2.78-r1 +2.78-r1 < 2.78-r2 +2.78-r2 < 2.79-r0 +2.79-r0 < 2.79-r1 +2.79-r1 < 2.79-r2 +2.79-r2 < 2.80-r0 +2.80-r0 < 2.80-r1 +2.80-r1 < 2.80-r2 +2.80-r2 < 2.80-r3 +2.80-r3 < 2.80-r4 +2.80-r4 < 2.80-r5 +2.80-r5 < 2.81-r0 +2.81-r0 < 2.81-r1 +2.81-r1 < 2.81-r5 +2.81-r5 < 2.82-r0 +2.82-r0 < 2.82-r1 +2.82-r1 < 2.83-r0 +2.83-r0 < 2.83-r1 +2.83-r1 < 2.83-r4 +2.83-r4 < 2.83-r5 +2.83-r5 < 2.84-r0 +2.84-r0 < 2.84-r1 +2.84-r1 < 2.85-r1 +2.85-r1 < 2.86-r0 +2.86-r0 < 2.86-r1 +2.86-r1 < 2.86-r2 +2.86-r2 < 2.86-r3 +2.86-r3 < 2.86-r4 +2.86-r4 < 2.86-r5 +2.86-r5 < 2.87-r0 +2.87-r0 < 2.87-r1 +2.87-r1 < 2.87-r2 +2.87-r2 < 2.88-r0 +2.88-r0 < 2.88-r1 +2.88-r1 < 2.89-r0 +2.89-r0 < 2.89-r1 +2.89-r1 < 2.89-r2 +2.89-r2 < 2.89-r3 +2.89-r3 < 2.89-r4 +2.89-r4 < 2.89-r5 +2.89-r5 < 2.89-r6 +2.0.0-r0 < 2.1.2-r0 +2.1.2-r0 < 2.2.0-r0 +2.2.1-r0 < 2.3.0-r0 +2.3.0-r0 < 2.4.0-r0 +2.4.2-r0 < 2.5.1-r0 +2.5.1-r0 < 2.6.0-r0 +2.6.1-r0 < 2.7.0-r0 +2.7.0-r0 < 2.11.0-r0 +2.11.0-r0 < 2.12.0-r0 +2.12.0-r0 < 2.14.1-r0 +2.14.1-r0 < 2.16.0-r0 +2.16.1-r0 < 2.16.1-r1 +2.16.1-r1 < 2.16.2-r0 +2.16.2-r0 < 2.16.2-r1 +2.16.2-r1 < 2.16.3-r0 +2.16.3-r1 < 2.16.5-r0 +2.16.5-r0 < 2.16.5-r1 +2.16.5-r1 < 2.16.6-r0 +2.16.6-r0 < 2.16.6-r1 +2.16.6-r1 < 2.16.8-r0 +2.16.8-r0 < 2.16.8-r1 +2.16.8-r1 < 2.16.9-r0 +2.16.9-r0 < 2.16.9-r1 +2.16.9-r1 < 2.16.10-r0 +2.16.10-r0 < 2.16.10-r1 +2.16.10-r1 < 2.16.12-r0 +2.16.12-r0 < 2.16.12-r1 +2.16.12-r1 < 2.28.0-r0 +2.28.0-r1 < 2.28.1-r0 +2.28.1-r0 < 2.28.1-r1 +2.28.1-r1 < 2.28.2-r0 +2.28.2-r0 < 2.28.2-r1 +2.28.2-r1 < 2.28.3-r0 +2.28.3-r0 < 2.28.3-r1 +2.28.3-r1 < 2.28.3-r2 +2.28.3-r2 < 2.28.3-r3 +2.28.3-r3 < 2.28.4-r1 +2.28.4-r1 < 2.28.4-r3 +2.28.4-r3 < 2.28.5-r1 +2.28.5-r1 < 2.28.5-r3 +2.28.5-r3 < 2.28.6-r3 +2.28.6-r3 < 2.28.7-r1 +2.28.7-r1 < 2.28.7-r3 +2.4.11-r0 < 2.4.16-r0 +2.4.16-r0 < 2.4.16-r1 +2.4.16-r1 < 2.4.16-r2 +2.4.16-r2 < 2.4.18-r0 +2.4.18-r0 < 2.4.19-r0 +2.4.19-r0 < 2.4.19-r1 +2.4.19-r1 < 2.4.19-r2 +2.4.19-r2 < 2.4.19-r3 +2.4.19-r3 < 2.4.19-r4 +2.4.19-r4 < 2.4.19-r5 +2.4.19-r5 < 2.4.21-r0 +2.4.21-r0 < 2.4.21-r1 +2.4.21-r1 < 2.4.21-r2 +2.4.21-r2 < 2.4.21-r3 +2.4.21-r3 < 2.4.23-r0 +2.4.23-r1 < 2.4.24-r0 +2.4.24-r0 < 2.4.24-r1 +2.4.24-r1 < 2.4.24-r2 +2.4.24-r2 < 2.4.24-r3 +2.4.24-r3 < 2.4.25-r0 +2.4.25-r1 < 2.4.25-r2 +2.4.25-r2 < 2.4.26-r0 +2.4.26-r1 < 2.4.26-r2 +2.4.26-r2 < 2.4.26-r3 +2.4.26-r3 < 2.4.26-r4 +2.4.26-r4 < 2.4.28-r0 +2.4.28-r0 < 2.4.28-r2 +2.4.28-r2 < 2.4.28-r3 +2.4.28-r3 < 2.4.30-r0 +2.4.30-r0 < 2.4.31-r0 +2.4.31-r0 < 2.4.31-r1 +2.4.31-r1 < 2.4.31-r2 +2.4.31-r2 < 2.4.31-r3 +2.4.31-r3 < 2.4.32-r0 +2.4.32-r0 < 2.4.32-r1 +2.4.32-r1 < 2.4.32-r2 +2.4.32-r2 < 2.4.33-r0 +2.4.33-r0 < 2.4.34-r0 +2.4.34-r0 < 2.4.35-r0 +2.4.35-r0 < 2.4.35-r1 +2.4.35-r1 < 2.4.35-r2 +2.4.35-r2 < 2.4.36-r0 +2.4.36-r0 < 2.4.36-r1 +2.4.36-r1 < 2.4.36-r2 +2.4.36-r2 < 2.4.37-r0 +2.4.37-r0 < 2.4.38-r0 +2.4.38-r1 < 2.4.39-r0 +2.4.39-r0 < 2.4.39-r1 +2.4.39-r1 < 2.4.40-r0 +2.4.40-r0 < 2.4.40-r1 +2.4.40-r1 < 2.4.40-r2 +2.4.40-r2 < 2.4.40-r3 +2.4.40-r3 < 2.4.40-r4 +2.4.40-r4 < 2.4.40-r5 +2.4.40-r5 < 2.4.41-r0 +2.4.41-r0 < 2.4.42-r0 +2.4.42-r0 < 2.4.42-r1 +2.4.42-r1 < 2.4.43-r0 +2.4.43-r0 < 2.4.43-r1 +2.4.43-r1 < 2.4.44-r0 +2.4.44-r0 < 2.4.44-r1 +2.4.44-r1 < 2.4.44-r2 +2.4.44-r2 < 2.4.44-r3 +2.4.44-r3 < 2.4.44-r4 +2.4.44-r4 < 2.4.44-r5 +2.4.44-r5 < 2.4.45-r0 +2.4.45-r0 < 2.4.45-r1 +2.4.45-r1 < 2.4.45-r2 +2.4.45-r2 < 2.4.45-r3 +2.4.45-r3 < 2.4.45-r4 +2.4.45-r4 < 2.4.46-r0 +2.4.46-r3 < 2.4.46-r4 +2.4.46-r4 < 2.4.47-r2 +2.4.47-r2 < 2.4.47-r3 +2.4.47-r3 < 2.4.48-r0 +2.4.48-r3 < 2.4.48-r4 +2.4.48-r4 < 2.4.49-r0 +2.4.49-r0 < 2.4.49-r1 +2.4.50-r2 < 2.4.51-r0 +2.4.51-r0 < 2.4.51-r2 +2.4.51-r2 < 2.4.52-r0 +2.4.52-r0 < 2.4.52-r2 +2.4.52-r2 < 2.4.54-r0 +2.4.54-r0 < 2.4.54-r2 +2.4.54-r2 < 2.4.56-r0 +2.4.56-r0 < 2.4.56-r2 +2.4.56-r2 < 2.4.57-r0 +2.4.57-r1 < 2.4.58-r0 +2.4.58-r0 < 2.4.59-r0 +2.4.59-r0 < 2.4.59-r1 +2.4.59-r1 < 2.4.59-r2 +2.4.59-r2 < 2.4.59-r3 +2.4.59-r3 < 2.6.0-r0 +2.6.0-r0 < 2.6.0-r3 +1.2.0-r0 < 1.2.3-r0 +1.2.3-r0 < 1.2.3-r1 +1.2.3-r1 < 1.3.1-r0 +1.3.2-r0 < 1.3.2-r1 +1.3.2-r1 < 1.3.2-r2 +1.3.2-r2 < 1.3.3-r0 +1.3.4-r0 < 1.3.4-r1 +1.3.4-r1 < 1.3.5-r0 +1.3.5-r0 < 1.3.5-r1 +1.3.5-r1 < 1.3.5-r2 +1.3.5-r2 < 1.3.5-r3 +1.3.5-r3 < 1.3.5-r4 +1.3.5-r4 < 1.3.5-r5 +1.3.5-r5 < 1.3.6-r0 +1.3.6-r0 < 1.3.6-r1 +1.1.11-r1 < 1.1.13-r0 +1.1.13-r0 < 1.1.14-r0 +1.1.14-r1 < 1.1.15-r0 +1.1.15-r0 < 1.1.16-r0 +1.1.16-r0 < 1.2.1-r0 +1.2.1-r0 < 1.2.3-r0 +1.2.5-r0 < 1.2.6-r0 +1.2.6-r1 < 1.2.7-r0 +1.2.7-r0 < 1.2.8-r0 +1.2.10-r0 < 1.2.11-r0 +1.2.11-r4 < 1.2.11-r5 +1.2.11-r5 < 1.2.12-r0 +1.2.12-r1 < 1.2.12-r2 +1.2.12-r2 < 1.2.12-r3 +1.2.12-r3 < 1.2.13-r0 +1.2.13-r0 < 1.2.13-r1 +1.2.13-r1 < 2.0.1-r0 +2.0.8-r0 < 2.0.9-r0 +2.0.9-r0 < 2.0.9-r1 +2.0.9-r1 < 2.0.10-r0 +2.0.11-r0 < 2.0.11-r1 +2.0.11-r1 < 2.0.12-r0 +2.0.12-r1 < 2.0.12-r2 +2.0.12-r2 < 2.0.13-r0 +2.0.13-r0 < 2.0.13-r1 +2.0.13-r1 < 2.0.14-r0 +2.0.14-r0 < 2.0.14-r1 +2.0.14-r1 < 2.0.15-r0 +2.0.17-r0 < 2.0.17-r1 +2.0.17-r1 < 2.0.17-r2 +2.0.17-r2 < 2.0.18-r0 +2.0.18-r0 < 2.1.0-r0 +2.1.4-r0 < 2.1.5-r0 +2.1.5-r0 < 2.1.6-r0 +2.1.6-r0 < 2.1.6-r1 +2.1.6-r1 < 2.1.7-r0 +2.1.7-r0 < 2.1.8-r0 +2.1.8-r0 < 2.1.9-r0 +2.1.9-r0 < 2.1.9-r1 +2.1.9-r1 < 2.1.10-r0 +2.1.10-r0 < 2.1.10-r1 +2.1.10-r1 < 2.1.12-r0 +2.1.12-r0 < 2.1.13-r0 +2.1.13-r0 < 2.1.14-r0 +2.1.14-r0 < 2.1.15-r0 +2.1.15-r0 < 2.1.16-r0 +2.1.16-r0 < 2.2.1-r0 +2.2.7-r0 < 2.2.8-r0 +2.2.9-r0 < 2.2.10-r0 +2.2.10-r0 < 2.2.11-r0 +2.2.11-r0 < 2.2.12-r0 +2.2.12-r0 < 2.2.13-r0 +2.2.13-r0 < 2.2.14-r0 +2.2.14-r0 < 2.2.15-r0 +2.2.15-r0 < 2.2.15-r1 +2.2.15-r1 < 2.2.15-r2 +2.2.15-r2 < 2.2.16-r0 +2.2.16-r1 < 2.2.18-r0 +2.2.18-r0 < 2.2.18-r1 +2.2.18-r1 < 2.2.19-r0 +2.2.19-r0 < 2.2.19-r1 +2.2.19-r1 < 2.2.19-r2 +2.2.19-r2 < 2.2.20-r0 +2.2.20-r0 < 2.2.20-r1 +2.2.20-r1 < 2.2.21-r0 +2.2.21-r0 < 2.2.22-r0 +2.2.22-r1 < 2.2.23-r0 +2.2.23-r0 < 2.2.23-r1 +2.2.23-r1 < 2.2.24-r0 +2.2.24-r0 < 2.2.24-r1 +2.2.24-r1 < 2.2.25-r0 +2.2.25-r0 < 2.2.25-r1 +2.2.25-r1 < 2.2.25-r2 +2.2.25-r2 < 2.2.26.0-r0 +2.2.26.0-r0 < 2.2.27-r0 +2.2.27-r0 < 2.2.27-r1 +2.2.27-r1 < 2.2.27-r2 +2.2.27-r2 < 2.2.29.1-r0 +2.2.29.1-r0 < 2.2.29.1-r2 +2.2.29.1-r2 < 2.2.32-r0 +2.2.32-r0 < 2.2.32-r2 +2.2.32-r2 < 2.2.33.2-r0 +2.2.33.2-r0 < 2.2.33.2-r1 +2.2.33.2-r1 < 2.2.33.2-r2 +2.2.33.2-r2 < 2.2.33.2-r3 +2.2.33.2-r3 < 2.2.33.2-r4 +2.2.33.2-r4 < 2.2.34-r0 +2.2.34-r0 < 2.2.34-r1 +2.2.34-r1 < 2.2.34-r2 +2.2.34-r2 < 2.2.34-r3 +2.2.34-r3 < 2.2.36.1-r2 +2.2.36.1-r2 < 2.2.36.3-r2 +2.2.36.3-r2 < 2.3.1-r0 +2.3.1-r1 < 2.3.1-r3 +2.3.1-r3 < 2.3.2.1-r0 +2.3.2.1-r0 < 2.3.2.1-r1 +2.3.2.1-r1 < 2.3.2.1-r2 +2.3.2.1-r2 < 2.3.2.1-r3 +2.3.2.1-r3 < 2.3.2.1-r4 +2.3.2.1-r4 < 2.3.3-r0 +2.3.3-r3 < 2.3.4.1-r0 +2.3.4.1-r0 < 2.3.4.1-r1 +2.3.4.1-r1 < 2.3.4.1-r3 +2.3.4.1-r3 < 2.3.5.1-r0 +2.3.5.1-r0 < 2.3.5.1-r1 +2.3.5.1-r1 < 2.3.5.1-r3 +2.3.5.1-r3 < 2.3.6-r0 +2.3.6-r1 < 2.3.6-r3 +2.3.6-r3 < 2.3.7-r0 +2.3.7-r0 < 2.3.7-r3 +2.3.7-r3 < 2.3.7.1-r0 +2.3.7.1-r0 < 2.3.7.1-r3 +2.3.7.1-r3 < 2.3.7.2-r0 +2.3.7.2-r0 < 2.3.7.2-r3 +2.3.7.2-r3 < 2.3.8-r0 +2.3.8-r0 < 2.3.8-r3 +2.3.8-r3 < 2.3.9-r0 +2.3.9-r0 < 2.3.9-r3 +2.3.9-r3 < 2.3.9.2-r0 +2.3.9.2-r0 < 2.3.9.2-r3 +2.3.9.2-r3 < 2.3.9.3-r0 +2.3.9.3-r0 < 2.3.9.3-r3 +2.3.9.3-r3 < 2.3.10-r0 +2.3.10-r0 < 2.3.10-r3 +2.3.10-r3 < 2.3.10.1-r0 +2.3.10.1-r0 < 2.3.10.1-r3 +2.3.10.1-r3 < 2.3.11.3-r0 +2.3.11.3-r0 < 2.3.11.3-r1 +2.3.11.3-r1 < 2.3.11.3-r3 +2.3.11.3-r3 < 2.3.13-r0 +2.3.13-r0 < 2.3.13-r3 +2.3.13-r3 < 2.3.14-r0 +2.3.14-r0 < 2.3.14-r3 +2.3.14-r3 < 2.3.15-r0 +2.3.15-r0 < 2.3.16-r0 +2.3.16-r0 < 2.3.16-r1 +2.3.16-r1 < 2.3.16-r2 +2.3.16-r2 < 2.3.17-r0 +2.3.17-r0 < 2.3.17-r1 +2.3.17-r1 < 2.3.17-r2 +2.3.17-r2 < 2.3.17.1-r2 +2.3.17.1-r2 < 2.3.18-r2 +2.3.18-r2 < 2.3.19-r2 +2.3.19-r2 < 2.3.19.1-r2 +0.3.6-r0 < 0.3.6-r1 +0.3.6-r1 < 0.3.6-r2 +0.3.6-r2 < 0.3.7-r0 +0.3.7-r0 < 0.3.7-r1 +0.3.7-r1 < 0.3.8-r0 +0.3.8-r0 < 0.3.9.2-r0 +0.3.9.2-r0 < 0.4.0-r0 +0.4.0-r0 < 0.4.0-r1 +0.4.0-r1 < 0.4.1-r0 +0.4.1-r0 < 0.4.2-r0 +0.4.2-r0 < 0.4.2-r1 +0.4.2-r1 < 0.4.3-r0 +0.4.3-r0 < 0.4.3-r1 +0.4.3-r1 < 1.0-r0 +1.0-r0 < 1.1-r0 +1.1-r0 < 1.1.1-r0 +1.1.1-r2 < 1.2-r0 +1.2-r1 < 1.2-r2 +1.2-r2 < 1.3-r0 +1.3-r3 < 1.4-r0 +1.4-r0 < 1.4-r3 +1.4-r3 < 1.5-r0 +1.5-r4 < 1.6-r0 +1.6-r0 < 1.6-r4 +1.6-r4 < 1.7-r0 +1.7-r1 < 1.7.1-r0 +1.7.1-r1 < 1.8-r0 +1.8-r1 < 1.8-r2 +1.8-r2 < 1.9-r0 +1.9-r0 < 1.9-r2 +8.3.5-r0 < 8.3.7-r0 +8.3.7-r0 < 8.3.7-r1 +8.3.7-r1 < 8.3.7-r2 +8.3.7-r2 < 8.3.7-r3 +8.3.7-r3 < 8.4.0-r0 +8.4.0-r0 < 8.4.0-r1 +8.4.0-r1 < 8.4.0-r2 +8.4.0-r2 < 8.4.1-r0 +8.4.1-r0 < 8.4.1-r1 +8.4.1-r1 < 8.4.2-r0 +8.4.2-r0 < 8.4.2-r1 +8.4.2-r1 < 8.4.3-r0 +8.4.3-r0 < 8.4.3-r1 +8.4.3-r1 < 8.4.3-r2 +8.4.3-r2 < 8.4.3-r3 +8.4.3-r3 < 8.4.4-r0 +8.4.4-r0 < 9.0.1-r0 +9.0.1-r0 < 9.0.2-r0 +9.0.2-r0 < 9.0.3-r0 +9.0.3-r0 < 9.0.3-r1 +9.0.3-r1 < 9.0.4-r0 +9.0.4-r0 < 9.1.0-r0 +9.1.0-r0 < 9.1.0-r1 +9.1.0-r1 < 9.1.1-r0 +9.1.1-r0 < 9.1.1-r1 +9.1.1-r1 < 9.1.1-r2 +9.1.1-r2 < 9.1.2-r0 +9.1.2-r0 < 9.1.2-r1 +9.1.2-r1 < 9.1.2-r2 +9.1.2-r2 < 9.1.3-r0 +9.1.3-r0 < 9.1.4-r0 +9.1.4-r0 < 9.1.5-r0 +9.1.5-r0 < 9.2.0-r0 +9.2.0-r0 < 9.2.0-r1 +9.2.0-r1 < 9.2.1-r0 +9.2.1-r0 < 9.2.1-r1 +9.2.1-r1 < 9.2.1-r2 +9.2.1-r2 < 9.2.2-r0 +9.2.2-r0 < 9.2.3-r0 +9.2.3-r0 < 9.2.4-r0 +9.2.4-r0 < 9.3.0-r0 +9.3.0-r0 < 9.3.0-r1 +9.3.0-r1 < 9.3.0-r2 +9.3.0-r2 < 9.3.1-r0 +9.3.1-r0 < 9.3.2-r0 +9.3.2-r0 < 9.3.3-r0 +9.3.3-r0 < 9.3.3-r1 +9.3.3-r1 < 9.3.3-r2 +9.3.3-r2 < 9.3.4-r0 +9.3.4-r0 < 9.3.4-r1 +9.3.4-r1 < 9.3.5-r0 +9.3.5-r0 < 9.3.5-r1 +9.3.5-r1 < 9.4.0-r0 +9.4.0-r0 < 9.4.1-r0 +9.4.1-r0 < 9.4.1-r1 +9.4.1-r1 < 9.4.1-r2 +9.4.1-r2 < 9.4.1-r3 +9.4.1-r3 < 9.4.2-r0 +9.4.2-r0 < 9.4.3-r0 +9.4.3-r0 < 9.4.4-r0 +9.4.4-r0 < 9.4.5-r0 +9.4.5-r0 < 9.4.5-r1 +9.4.5-r1 < 9.4.6-r1 +9.4.6-r1 < 9.4.9-r1 +9.4.9-r1 < 9.4.11-r1 +9.4.11-r1 < 9.4.12-r1 +9.4.12-r1 < 9.4.13-r1 +9.4.13-r1 < 9.5.0-r0 +9.5.0-r0 < 9.5.1-r0 +9.5.1-r0 < 9.5.2-r0 +9.5.2-r0 < 9.5.2-r1 +9.5.2-r1 < 9.5.2-r2 +9.5.2-r2 < 9.5.2-r3 +9.5.2-r3 < 9.5.2-r4 +9.5.2-r4 < 9.5.3-r0 +9.5.3-r0 < 9.5.3-r1 +9.5.3-r1 < 9.5.4-r0 +9.5.4-r0 < 9.5.4-r1 +9.5.4-r1 < 9.5.6-r1 +9.5.6-r1 < 9.5.7-r1 +9.5.7-r1 < 9.5.8-r1 +9.5.8-r1 < 9.5.10-r1 +9.5.10-r1 < 9.5.11-r1 +9.5.11-r1 < 9.5.12-r1 +9.5.12-r1 < 9.6.0-r0 +9.6.0-r0 < 9.6.0-r1 +9.6.0-r1 < 9.6.1-r0 +9.6.1-r0 < 9.6.1-r1 +9.6.1-r1 < 9.6.2-r0 +9.6.2-r0 < 9.6.2-r1 +9.6.2-r1 < 9.6.2-r2 +9.6.2-r2 < 9.6.2-r3 +9.6.2-r3 < 9.6.2-r4 +9.6.2-r4 < 9.6.3-r0 +9.6.3-r0 < 9.6.3-r1 +9.6.3-r1 < 9.6.3-r4 +9.6.3-r4 < 9.6.4-r0 +9.6.4-r0 < 9.6.4-r1 +9.6.4-r1 < 9.6.4-r4 +9.6.4-r4 < 9.6.5-r0 +9.6.5-r0 < 9.6.5-r1 +9.6.5-r1 < 9.6.5-r4 +9.6.5-r4 < 9.6.6-r1 +9.6.6-r1 < 9.6.6-r4 +9.6.6-r4 < 9.6.7-r1 +9.6.7-r1 < 9.6.7-r4 +9.6.7-r4 < 9.6.8-r1 +9.6.8-r1 < 9.6.8-r4 +9.6.8-r4 < 9.6.9-r1 +9.6.9-r1 < 9.6.9-r4 +9.6.9-r4 < 9.6.10-r4 +9.6.10-r4 < 9.6.12-r4 +9.6.12-r4 < 10.0-r0 +10.0-r0 < 10.0-r1 +10.0-r1 < 10.1-r0 +10.1-r0 < 10.1-r1 +10.1-r1 < 10.1-r2 +10.1-r2 < 10.2-r0 +10.2-r0 < 10.2-r1 +10.2-r1 < 10.3-r0 +10.3-r0 < 10.3-r1 +10.3-r1 < 10.4-r1 +10.4-r1 < 10.5-r1 +10.5-r1 < 10.7-r1 +10.7-r1 < 10.8-r1 +10.8-r1 < 10.9-r1 +10.9-r1 < 10.10-r1 +10.10-r1 < 11.0-r1 +11.0-r1 < 11.1-r0 +11.1-r0 < 11.1-r1 +11.1-r1 < 11.2-r0 +11.2-r0 < 11.2-r1 +11.2-r1 < 11.3-r0 +11.3-r0 < 11.3-r1 +11.3-r1 < 11.3-r2 +11.3-r2 < 11.4-r0 +11.4-r0 < 11.4-r1 +11.4-r1 < 11.5-r0 +11.5-r0 < 11.5-r1 +11.5-r1 < 11.5-r2 +11.5-r2 < 11.6-r1 +11.6-r1 < 11.7-r1 +11.7-r1 < 11.9-r1 +11.9-r1 < 11.10-r1 +11.10-r1 < 11.11-r1 +11.11-r1 < 12.0-r0 +12.0-r0 < 12.0-r1 +12.0-r1 < 12.1-r0 +12.1-r0 < 12.1-r1 +12.1-r1 < 12.1-r2 +12.1-r2 < 12.2-r0 +12.2-r0 < 12.2-r1 +12.2-r1 < 12.2-r2 +12.2-r2 < 12.2-r3 +12.2-r3 < 12.3-r0 +12.3-r0 < 12.3-r1 +12.3-r1 < 12.3-r2 +12.3-r2 < 12.4-r0 +12.4-r0 < 12.4-r1 +12.4-r1 < 12.4-r2 +12.4-r2 < 12.5-r0 +12.5-r0 < 12.5-r1 +12.5-r1 < 12.5-r2 +12.5-r2 < 12.6-r1 +12.6-r1 < 12.6-r2 +12.6-r2 < 12.7-r1 +12.7-r1 < 12.7-r2 +12.7-r2 < 12.8-r1 +12.8-r1 < 12.8-r2 +12.8-r2 < 13.1-r0 +13.1-r0 < 13.1-r1 +13.1-r1 < 13.1-r2 +13.1-r2 < 13.2-r0 +13.2-r0 < 13.2-r1 +13.2-r1 < 13.2-r2 +13.2-r2 < 13.2-r3 +13.2-r3 < 13.2-r4 +13.2-r4 < 13.3-r0 +13.3-r0 < 13.3-r2 +13.3-r2 < 13.4-r0 +13.4-r0 < 13.4-r2 +13.4-r2 < 13.5-r0 +13.5-r0 < 13.5-r2 +13.5-r2 < 13.6-r0 +13.6-r0 < 13.6-r1 +13.6-r1 < 13.6-r2 +13.6-r2 < 13.7-r1 +13.7-r1 < 13.7-r2 +13.7-r2 < 13.8-r1 +13.8-r1 < 13.8-r2 +13.8-r2 < 13.10-r1 +13.10-r1 < 13.11-r1 +13.11-r1 < 13.11-r2 +9.4.5-r1 < 9.5.0-r0 +9.5.4-r0 < 9.6.0-r0 +9.6.3-r0 < 9.6.4-r0 +9.6.4-r1 < 9.6.5-r0 +9.6.5-r1 < 10.0-r0 +10.2-r0 < 10.3-r0 +10.3-r1 < 10.4-r0 +10.4-r0 < 10.5-r0 +10.5-r0 < 11.0-r0 +11.0-r0 < 11.0-r1 +11.1-r0 < 11.2-r0 +11.5-r2 < 12.0-r0 +12.4-r1 < 12.5-r0 +12.5-r1 < 13.1-r0 +13.3-r0 < 13.3-r1 +13.3-r1 < 13.4-r0 +13.4-r0 < 13.4-r1 +13.4-r1 < 13.4-r2 +13.4-r2 < 14.0-r0 +14.0-r0 < 14.0-r2 +14.0-r2 < 14.0-r3 +14.0-r3 < 14.0-r4 +14.0-r4 < 14.0-r5 +14.0-r5 < 14.0-r6 +14.0-r6 < 14.1-r0 +14.1-r0 < 14.1-r1 +14.1-r1 < 14.1-r2 +14.1-r2 < 14.1-r3 +14.1-r3 < 14.1-r4 +14.1-r4 < 14.1-r5 +14.1-r5 < 14.1-r6 +14.1-r6 < 14.1-r7 +14.1-r7 < 14.2-r0 +14.2-r0 < 14.2-r1 +14.2-r1 < 14.2-r2 +14.2-r2 < 14.2-r3 +14.2-r3 < 14.2-r5 +14.2-r5 < 14.3-r0 +14.3-r0 < 14.3-r1 +14.3-r1 < 14.3-r5 +14.3-r5 < 14.4-r0 +14.4-r0 < 14.4-r1 +14.4-r1 < 14.4-r2 +14.4-r2 < 14.4-r5 +14.4-r5 < 14.5-r0 +14.5-r0 < 14.5-r1 +14.5-r1 < 14.5-r2 +14.5-r2 < 14.5-r3 +14.5-r3 < 14.5-r5 +14.5-r5 < 14.6-r0 +14.6-r0 < 14.6-r1 +14.6-r1 < 14.7-r0 +14.7-r0 < 14.7-r1 +14.7-r1 < 14.7-r2 +14.7-r2 < 14.7-r3 +14.7-r3 < 14.7-r4 +14.7-r4 < 14.7-r5 +14.7-r5 < 14.8-r1 +14.8-r1 < 14.8-r4 +14.8-r4 < 14.8-r5 +14.8-r5 < 14.9-r1 +14.9-r1 < 14.9-r4 +14.9-r4 < 14.9-r5 +14.9-r5 < 14.10-r1 +14.10-r1 < 14.10-r4 +15.1-r0 < 15.1-r1 +15.1-r1 < 15.2-r0 +15.2-r0 < 15.2-r1 +15.2-r1 < 15.2-r2 +15.2-r2 < 15.2-r3 +15.2-r3 < 15.2-r4 +15.2-r4 < 15.3-r0 +15.3-r0 < 15.3-r1 +15.3-r1 < 15.3-r4 +15.3-r4 < 15.4-r0 +15.4-r0 < 15.4-r1 +15.4-r1 < 15.4-r2 +15.4-r2 < 15.4-r4 +15.4-r4 < 15.5-r2 +15.5-r2 < 15.5-r4 +1.2.1-r3 < 1.3.0-r0 +1.3.0-r1 < 1.3.1-r0 +1.3.1-r1 < 1.4.0-r0 +1.4.2-r1 < 1.5.0-r0 +1.5.2-r1 < 1.5.3-r0 +1.5.3-r1 < 1.5.3-r2 +1.5.3-r2 < 1.5.3-r3 +1.5.3-r3 < 1.5.3-r4 +1.5.3-r4 < 2.0.2-r0 +2.0.2-r0 < 2.0.2-r4 +2.0.2-r4 < 2.0.3-r0 +2.0.3-r0 < 2.0.3-r4 +2.0.3-r4 < 2.0.4-r0 +2.0.5-r0 < 2.0.5-r1 +2.0.5-r1 < 2.0.5-r2 +2.0.5-r2 < 2.0.6-r0 +2.0.6-r0 < 2.0.6-r1 +2.0.6-r1 < 2.1.0-r0 +2.1.2-r1 < 2.1.3-r0 +2.1.3-r1 < 2.1.4-r0 +2.1.5-r1 < 2.1.5.1-r0 +2.1.5.1-r0 < 2.1.5.1-r1 +2.1.5.1-r1 < 2.1.5.1-r2 +2.1.5.1-r2 < 2.1.5.1-r3 +0.99.11-r4 < 0.99.11-r5 +0.99.11-r5 < 0.99.11-r6 +0.99.11-r6 < 0.99.11-r7 +0.99.11-r7 < 0.99.11-r8 +0.99.11-r8 < 0.99.11-r9 +0.99.11-r9 < 0.99.11-r10 +0.99.11-r10 < 0.99.12-r0 +0.99.12-r0 < 0.99.13-r0 +0.99.13-r0 < 0.99.13-r1 +0.99.13-r1 < 0.99.13-r2 +0.99.13-r2 < 0.99.15-r0 +0.99.15-r0 < 0.99.15-r1 +0.99.15-r1 < 0.99.15-r2 +0.99.15-r2 < 0.99.15-r3 +0.99.15-r3 < 0.99.15-r4 +0.99.15-r4 < 0.99.16-r0 +0.99.16-r0 < 0.99.17-r0 +0.99.17-r0 < 0.99.18-r0 +0.99.18-r0 < 0.99.18-r1 +0.99.18-r1 < 0.99.20-r0 +0.99.20-r0 < 0.99.20.1-r0 +0.99.20.1-r0 < 0.99.21-r0 +0.99.21-r0 < 0.99.21-r1 +0.99.21-r1 < 0.99.21-r2 +0.99.21-r2 < 0.99.21-r3 +0.99.21-r3 < 0.99.22-r0 +0.99.22-r0 < 0.99.22-r1 +0.99.22-r1 < 0.99.22.1-r0 +0.99.22.1-r0 < 0.99.22.1-r1 +0.99.22.1-r1 < 0.99.22.3-r0 +0.99.22.3-r0 < 0.99.22.3-r1 +0.99.22.3-r1 < 0.99.22.3-r2 +0.99.22.3-r2 < 0.99.22.3-r3 +0.99.22.3-r3 < 0.99.22.4-r0 +0.99.22.4-r0 < 0.99.22.4-r1 +0.99.22.4-r1 < 0.99.22.4-r2 +0.99.22.4-r2 < 0.99.22.4-r3 +0.99.22.4-r3 < 0.99.22.4-r4 +0.99.22.4-r4 < 0.99.22.4-r5 +0.99.22.4-r5 < 0.99.22.4-r6 +0.99.22.4-r6 < 0.99.23-r0 +0.99.23-r0 < 0.99.23-r1 +0.99.23-r1 < 0.99.23-r2 +0.99.23-r2 < 0.99.23-r3 +0.99.23-r3 < 0.99.23-r4 +0.99.23-r4 < 0.99.23.1-r0 +0.99.23.1-r0 < 0.99.23.1-r1 +0.99.23.1-r1 < 0.99.24.1-r0 +0.99.24.1-r0 < 0.99.24.1-r1 +0.99.24.1-r1 < 0.99.24.1-r2 +0.99.24.1-r2 < 0.99.24.1-r3 +0.99.24.1-r3 < 1.0.20160315-r0 +1.0.20160315-r0 < 1.0.20160315-r1 +1.0.20160315-r1 < 1.1.0-r0 +1.1.0-r1 < 1.1.1-r1 +1.1.1-r1 < 1.2.0-r1 +1.2.0-r1 < 1.2.1-r1 +3.0.5-r0 < 3.0.6-r0 +3.0.6-r0 < 3.0.6-r1 +3.0.6-r1 < 3.0.7-r0 +3.0.7-r1 < 3.0.8-r0 +3.0.8-r0 < 3.0.9-r0 +3.0.9-r1 < 3.1.0-r0 +3.1.1-r1 < 3.1.1-r2 +3.1.1-r2 < 3.1.2-r2 +3.1.2-r2 < 3.1.2-r3 +3.1.2-r3 < 3.1.2-r4 +3.1.2-r4 < 3.1.2-r5 +3.1.2-r5 < 3.1.2-r6 +3.1.2-r6 < 3.1.2-r7 +3.1.2-r7 < 3.1.3-r0 +3.1.3-r1 < 3.1.3-r2 +3.1.3-r2 < 3.1.3-r3 +3.1.3-r3 < 3.2.2-r0 +3.2.3-r1 < 3.2.3-r2 +3.2.3-r2 < 3.2.3-r3 +3.2.3-r3 < 3.2.3-r4 +3.2.3-r4 < 3.2.3-r5 +3.2.3-r5 < 3.2.3-r6 +3.2.3-r6 < 3.2.4-r0 +1.3.4-r0 < 1.4.0-r0 +1.4.3-r2 < 1.4.4-r0 +1.4.7-r0 < 1.5.0-r0 +1.5.2-r1 < 1.5.3-r1 +0.2.1-r0 < 0.2.2-r0 +0.2.2-r0 < 0.3.1-r0 +0.3.1-r0 < 0.3.1-r1 +0.3.1-r1 < 0.4-r0 +0.4-r0 < 0.4-r1 +0.4-r1 < 0.4.2-r0 +0.4.2-r1 < 0.5.1-r0 +0.5.1-r0 < 0.5.2-r0 +0.5.2-r0 < 0.5.2-r1 +0.5.2-r1 < 0.5.2-r2 +0.5.2-r2 < 0.5.3-r0 +0.5.3-r0 < 0.5.4-r0 +0.5.4-r0 < 0.6-r0 +0.6-r0 < 0.7-r0 +0.7.1-r0 < 0.7.2-r0 +0.7.2-r0 < 0.8.0-r0 +0.8.3-r1 < 0.8.4-r0 +0.8.6-r0 < 0.9.0-r0 +0.9.1-r0 < 0.9.2-r0 +0.9.2-r0 < 0.9.3-r0 +0.9.3-r0 < 0.9.4-r0 +0.9.4-r0 < 0.9.5-r0 +0.9.5-r0 < 1.0.1-r0 +1.0.5-r0 < 1.1.0-r0 +1.1.0-r0 < 1.1.1-r0 +1.1.1-r0 < 1.1.2-r0 +1.1.2-r2 < 1.1.3-r0 +1.1.3-r0 < 1.1.3-r2 +1.1.3-r2 < 1.1.4-r0 +1.1.4-r0 < 1.1.4-r2 +1.1.4-r2 < 1.1.5-r0 +1.1.5-r2 < 1.1.6-r2 +1.1.6-r2 < 1.1.7-r2 +1.1.7-r2 < 1.1.8-r2 +1.1.8-r2 < 1.1.9-r2 +1.1.9-r2 < 1.2.0-r0 +1.2.2-r0 < 1.2.2-r2 +1.2.2-r2 < 1.2.3-r0 +1.2.3-r0 < 1.2.3-r2 +1.2.3-r2 < 1.2.4-r0 +1.2.4-r0 < 1.2.4-r2 +1.2.4-r2 < 1.2.5-r0 +1.1.9-r0 < 1.1.10-r0 +1.1.12-r0 < 1.1.13-r0 +1.1.13-r1 < 1.1.14-r1 +1.19-r1 < 1.19-r2 +1.19-r2 < 1.19-r3 +1.19-r3 < 1.19-r4 +1.19-r4 < 1.19-r5 +1.19-r5 < 1.19-r6 +1.19-r6 < 1.19-r7 +1.19-r7 < 1.19-r8 +1.19-r8 < 1.19-r9 +1.19-r9 < 1.21-r0 +1.21-r0 < 1.21-r1 +1.21-r1 < 1.21-r2 +1.21-r2 < 1.21-r3 +1.21-r3 < 1.25-r0 +1.25-r1 < 1.25-r2 +1.25-r2 < 1.26-r0 +1.26-r1 < 1.26-r2 +1.26-r2 < 1.27-r0 +1.27-r0 < 1.27-r1 +1.27-r1 < 1.27-r2 +1.27-r2 < 1.29-r0 +1.29-r1 < 1.29-r2 +0.8.165-r0 < 1.0-r0 +1.0-r0 < 1.6-r0 +1.6-r2 < 1.7a-r0 +1.7a-r0 < 1.8-r0 +1.8-r0 < 1.9a-r0 +1.9a-r0 < 1.9a-r1 +1.9a-r1 < 1.9a-r2 +1.9a-r2 < 1.9a-r3 +1.9a-r3 < 1.9a-r4 +1.9a-r4 < 1.9a-r5 +1.9a-r5 < 1.9a-r6 +1.9a-r6 < 1.9a-r7 +1.9a-r7 < 1.9a-r8 +1.9a-r8 < 1.10-r0 +1.10-r0 < 1.10-r8 +1.10-r8 < 1.10a-r0 +1.10a-r0 < 1.10a-r1 +1.10a-r1 < 1.10a-r2 +1.10a-r2 < 1.11-r0 +1.11-r1 < 1.12.0-r0 +7.1-r0 < 7.1-r1 +7.1-r1 < 7.4-r0 +7.4-r0 < 7.5-r0 +7.5-r0 < 7.6-r0 +7.6-r0 < 8.2-r0 +8.2-r0 < 8.4-r0 +8.4-r0 < 8.4-r1 +8.4-r1 < 8.4-r2 +8.4-r2 < 8.5-r0 +8.5-r0 < 8.5-r1 +8.5-r1 < 8.6-r0 +8.6-r0 < 8.7-r0 +8.7-r0 < 8.8-r0 +8.8-r0 < 8.9-r0 +8.9-r0 < 8.10-r0 +8.10-r2 < 8.11-r0 +8.11-r0 < 8.12-r0 +8.13-r0 < 8.14-r0 +8.14-r0 < 8.15-r0 +8.15-r0 < 8.16-r0 +8.16-r0 < 8.17-r0 +8.17-r0 < 8.18-r0 +8.18-r0 < 8.19-r0 +8.19-r0 < 8.20-r0 +8.20-r0 < 8.20-r1 +8.20-r1 < 8.21-r1 +8.21-r1 < 8.21-r2 +8.21-r2 < 8.21-r3 +8.21-r3 < 8.21-r4 +8.21-r4 < 8.22-r0 +8.22-r0 < 8.22-r1 +8.22-r1 < 8.23-r0 +8.23-r0 < 8.23-r1 +8.23-r1 < 8.24-r0 +8.24-r0 < 8.24-r1 +8.24-r1 < 8.25-r0 +8.25-r0 < 8.25-r1 +8.25-r1 < 8.26-r0 +8.26-r0 < 8.26-r1 +8.26-r1 < 8.27-r0 +8.27-r0 < 8.27-r1 +8.27-r1 < 8.28-r0 +8.28-r0 < 8.28-r1 +8.28-r1 < 8.29-r0 +8.29-r0 < 8.29-r1 +8.29-r1 < 8.29-r2 +8.29-r2 < 8.30-r0 +8.32-r1 < 8.32-r2 +8.32-r2 < 9.0-r0 +9.0-r0 < 9.0-r1 +9.0-r1 < 9.0-r2 +9.0-r2 < 9.0-r3 +9.0-r3 < 9.1-r0 +9.1-r0 < 9.2-r0 +9.2-r0 < 9.2-r1 +9.2-r1 < 9.2-r2 +9.2-r2 < 9.2-r3 +9.2-r3 < 9.3-r0 +9.3-r0 < 9.3-r1 +9.3-r1 < 9.3-r2 +9.3-r2 < 9.3-r3 +9.3-r3 < 9.3-r4 +9.3-r4 < 9.3-r5 +9.3-r5 < 9.3-r6 +9.3-r6 < 9.3-r7 +4.76-r0 < 4.76-r1 +4.76-r1 < 4.76-r2 +4.76-r2 < 5.00-r0 +5.00-r0 < 5.00-r1 +5.00-r1 < 5.20-r0 +5.20-r0 < 5.20-r1 +5.20-r1 < 5.21-r0 +5.21-r0 < 5.21-r1 +5.21-r1 < 5.21-r2 +5.21-r2 < 5.50-r0 +5.50-r0 < 5.51-r0 +5.51-r0 < 5.51.2-r0 +5.51.2-r0 < 5.51.3-r0 +5.51.3-r0 < 5.51.4-r0 +5.51.4-r0 < 5.51.5-r0 +5.51.5-r0 < 5.51.6-r0 +5.51.6-r0 < 6.00-r0 +6.00-r0 < 6.01-r0 +6.01-r0 < 6.25-r0 +6.25-r0 < 6.40-r0 +6.40-r0 < 6.46-r0 +6.46-r0 < 6.47-r0 +6.47-r0 < 7.00-r0 +7.00-r0 < 7.00-r1 +7.00-r1 < 7.01-r1 +7.01-r1 < 7.10-r0 +7.10-r0 < 7.11-r0 +7.11-r0 < 7.12-r0 +7.12-r0 < 7.30-r0 +7.30-r0 < 7.30-r1 +7.30-r1 < 7.40-r0 +7.40-r0 < 7.40-r1 +7.40-r1 < 7.50-r0 +7.50-r0 < 7.50-r1 +7.50-r1 < 7.60-r0 +7.60-r0 < 7.60-r1 +7.60-r1 < 7.60-r2 +7.60-r2 < 7.70-r0 +7.70-r0 < 7.70-r1 +7.70-r1 < 7.70-r2 +7.70-r2 < 7.70-r3 +1.4.2-r1 < 1.4.2-r2 +1.4.2-r2 < 1.4.3-r0 +1.4.7-r0 < 1.4.8-r0 +1.4.8-r0 < 1.5.0-r0 +1.5.0-r2 < 1.5.2-r0 +1.5.2-r1 < 1.5.2-r2 +1.5.2-r2 < 1.5.2-r3 +1.5.2-r3 < 1.5.3-r0 +1.5.4-r0 < 1.5.4-r1 +1.5.4-r1 < 1.6.1-r0 +1.6.4-r0 < 1.7.0-r0 +1.7.3-r1 < 1.7.4-r0 +1.7.4-r0 < 1.7.5-r0 +1.7.5-r0 < 2.0.0-r0 +2.0.2-r1 < 2.0.2-r2 +2.0.2-r2 < 2.0.3-r0 +2.1.4-r0 < 2.2.1-r0 +2.2.4-r1 < 2.2.5-r0 +2.2.5-r1 < 2.2.6-r0 +2.2.6-r1 < 2.2.9-r0 +2.2.10-r1 < 2.2.11-r0 +2.2.11-r0 < 2.2.11-r1 +2.2.11-r1 < 2.2.12-r0 +2.2.12-r0 < 2.2.12-r1 +2.2.12-r1 < 2.2.12-r2 +2.2.12-r2 < 2.3.3-r0 +2.3.3-r3 < 2.3.3-r4 +2.3.3-r4 < 2.4.0-r0 +2.4.2-r2 < 2.4.2-r3 +2.4.2-r3 < 2.4.2-r4 +2.4.2-r4 < 2.4.2-r5 +2.4.2-r5 < 2.4.2-r6 +2.4.2-r6 < 2.4.2-r7 +2.4.2-r7 < 2.4.3-r0 +2.4.3-r1 < 2.4.4-r1 +2.4.4-r1 < 2.4.5-r1 +2.4.5-r1 < 2.4.6-r1 +1.0.6-r4 < 1.0.7-r0 +1.0.7-r1 < 1.0.7-r2 +1.0.7-r2 < 1.0.8-r0 +1.0.9-r1 < 1.0.9-r2 +1.0.9-r2 < 1.0.9-r3 +1.0.3-r1 < 1.0.3-r2 +1.0.3-r2 < 1.0.3-r3 +1.0.3-r3 < 1.1.0-r0 +1.1.1-r0 < 1.1.1-r2 +2.22.0-r2 < 2.22.0-r3 +2.22.0-r3 < 2.22.1-r0 +2.22.1-r0 < 2.22.1-r1 +2.22.1-r1 < 2.22.1-r2 +2.22.1-r2 < 2.22.1-r3 +2.22.1-r3 < 2.24.0-r0 +2.24.0-r0 < 2.24.0-r1 +2.24.0-r1 < 2.24.0-r2 +2.24.0-r2 < 2.26.1-r0 +2.26.1-r1 < 2.26.1-r2 +2.26.1-r2 < 2.26.4-r0 +2.26.4-r0 < 2.26.4-r1 +2.26.4-r1 < 2.26.5-r0 +2.26.5-r0 < 2.28.0-r0 +2.28.0-r0 < 2.28.2-r0 +2.28.2-r1 < 2.30.0-r0 +2.30.0-r1 < 2.30.7-r0 +2.30.7-r0 < 2.30.7-r1 +2.30.7-r1 < 2.31.5-r0 +2.31.5-r0 < 2.31.5-r1 +2.31.5-r1 < 2.32.1-r0 +2.32.1-r0 < 2.32.1-r1 +2.32.1-r1 < 2.32.2-r0 +2.32.2-r0 < 2.32.2-r1 +2.32.2-r1 < 2.34.0-r0 +2.34.0-r0 < 2.34.0-r1 +2.34.0-r1 < 2.34.0-r2 +2.34.0-r2 < 2.36.0-r0 +2.36.0-r2 < 2.36.2-r0 +2.36.2-r0 < 2.36.2-r2 +2.36.2-r2 < 2.36.5-r0 +2.36.5-r0 < 2.36.6-r0 +2.36.6-r0 < 2.36.6-r1 +2.36.6-r1 < 2.36.6-r2 +2.36.6-r2 < 2.36.8-r0 +2.36.8-r0 < 2.36.10-r0 +2.36.10-r0 < 2.36.11-r0 +2.36.11-r0 < 2.36.11-r1 +2.36.11-r1 < 2.36.11-r2 +2.36.11-r2 < 2.38.1-r0 +2.38.1-r0 < 2.38.1-r2 +2.38.1-r2 < 2.38.2-r0 +2.38.2-r0 < 2.38.2-r2 +2.38.2-r2 < 2.40.0-r0 +2.40.0-r1 < 2.40.0-r2 +2.40.0-r2 < 2.42.0-r0 +2.42.0-r0 < 2.42.0-r2 +2.42.0-r2 < 2.42.2-r0 +2.42.2-r0 < 2.42.2-r2 +2.42.2-r2 < 2.42.4-r0 +2.42.4-r0 < 2.42.4-r2 +2.42.4-r2 < 2.42.6-r0 +2.42.6-r0 < 2.42.6-r2 +2.26.1-r0 < 2.26.2-r0 +2.26.2-r0 < 2.26.3-r0 +2.26.3-r0 < 2.27.4-r0 +2.27.4-r0 < 2.28.0-r0 +2.28.0-r0 < 2.28.1-r0 +2.28.1-r0 < 2.28.2-r0 +2.30.1-r0 < 2.30.2-r0 +2.30.2-r0 < 2.31.92-r0 +2.31.92-r0 < 2.32.0-r0 +2.32.0-r0 < 2.32.1-r0 +2.32.1-r0 < 2.32.2-r0 +2.34.0-r0 < 2.34.1-r0 +2.34.1-r1 < 2.34.2-r0 +2.34.2-r0 < 2.34.2-r1 +2.34.2-r1 < 2.34.3-r0 +2.34.3-r0 < 2.36.0-r0 +2.36.0-r0 < 2.36.1-r0 +2.36.1-r0 < 2.36.1-r1 +2.36.1-r1 < 2.36.1-r2 +2.36.1-r2 < 2.38.1-r0 +2.38.1-r0 < 2.40.0-r0 +2.40.0-r0 < 2.40.2-r0 +2.40.2-r0 < 2.40.3-r0 +2.40.3-r0 < 2.42.0-r0 +2.42.0-r0 < 2.42.1-r0 +2.42.1-r0 < 2.42.2-r0 +2.42.2-r0 < 2.43.5-r0 +2.43.5-r0 < 2.44.0-r0 +2.44.0-r0 < 2.44.1-r0 +2.44.1-r0 < 2.44.2-r0 +2.44.2-r0 < 2.44.2-r1 +2.44.2-r1 < 2.46.0-r0 +2.46.0-r0 < 2.48.0-r0 +2.48.0-r0 < 2.48.1-r0 +2.48.1-r0 < 2.50.0-r0 +2.50.0-r0 < 2.50.0-r1 +2.50.0-r1 < 2.51.3-r0 +2.51.3-r0 < 2.51.3-r1 +2.51.3-r1 < 2.52.2-r0 +2.52.2-r0 < 2.52.2-r1 +2.52.2-r1 < 2.54.0-r0 +2.54.0-r0 < 2.54.0-r1 +2.54.0-r1 < 2.54.1-r0 +2.54.1-r0 < 2.54.1-r1 +2.54.1-r1 < 2.54.1-r2 +2.54.1-r2 < 2.56.0-r0 +2.56.0-r0 < 2.56.0-r1 +2.56.0-r1 < 2.56.0-r2 +2.56.0-r2 < 2.57.1-r1 +2.57.1-r1 < 2.58.0-r1 +2.58.0-r1 < 2.58.1-r1 +2.7.0-r1 < 2.7.1-r0 +2.7.4-r0 < 2.7.5-r0 +2.7.5-r0 < 2.7.6-r0 +2.7.6-r0 < 2.7.7-r0 +2.7.7-r0 < 2.7.8-r0 +2.7.8-r0 < 2.7.9-r0 +2.7.9-r2 < 2.7.10-r0 +2.7.10-r0 < 2.7.11-r0 +2.7.11-r0 < 2.7.11-r1 +2.7.11-r1 < 2.7.11-r2 +2.7.11-r2 < 2.8.0-r0 +2.8.0-r0 < 2.9.0-r0 +2.9.0-r0 < 2.10.0-r0 +2.10.0-r1 < 2.10.0-r2 +2.10.0-r2 < 2.10.0-r3 +2.10.0-r3 < 2.10.0-r4 +2.10.0-r4 < 2.10.1-r0 +2.10.2-r0 < 2.10.3-r0 +2.10.3-r1 < 2.10.4-r0 +2.10.6-r1 < 2.10.6-r2 +2.10.6-r2 < 2.10.6-r3 +2.10.6-r3 < 2.10.7-r0 +2.10.7-r0 < 2.10.7-r1 +2.10.7-r1 < 2.10.7-r2 +2.10.7-r2 < 2.10.8-r0 +2.10.8-r0 < 2.10.8-r2 +2.10.8-r2 < 2.10.9-r0 +2.10.9-r0 < 2.10.9-r2 +2.10.9-r2 < 2.10.10-r0 +2.10.10-r0 < 2.10.10-r2 +2.10.10-r2 < 2.10.11-r0 +2.10.11-r0 < 2.10.11-r1 +2.10.11-r1 < 2.10.11-r2 +2.10.11-r2 < 2.10.12-r2 +1.1.24-r1 < 1.1.26-r0 +1.1.26-r0 < 1.1.26-r1 +1.1.26-r1 < 1.1.26-r2 +1.1.26-r2 < 1.1.26-r3 +1.1.26-r3 < 1.1.26-r4 +1.1.26-r4 < 1.1.26-r5 +1.1.26-r5 < 1.1.26-r6 +1.1.26-r6 < 1.1.26-r7 +1.1.26-r7 < 1.1.26-r8 +1.1.26-r8 < 1.1.26-r9 +1.1.26-r9 < 1.1.27-r0 +1.1.27-r0 < 1.1.27-r1 +1.1.27-r1 < 1.1.28-r0 +1.1.28-r0 < 1.1.28-r1 +1.1.28-r1 < 1.1.28-r2 +1.1.28-r2 < 1.1.29-r0 +1.1.29-r0 < 1.1.29-r1 +1.1.29-r1 < 1.1.29-r2 +1.1.29-r2 < 1.1.29-r3 +1.1.29-r3 < 1.1.30-r0 +1.1.30-r0 < 1.1.30-r3 +1.1.30-r3 < 1.1.31-r0 +1.1.31-r0 < 1.1.31-r3 +1.1.31-r3 < 1.1.32-r0 +1.1.32-r0 < 1.1.32-r3 +1.1.32-r3 < 1.1.33-r0 +1.1.33-r0 < 1.1.33-r1 +1.1.33-r1 < 1.1.34-r0 +1.1.34-r0 < 1.1.34-r1 +3.12.6-r0 < 3.12.7-r0 +3.12.7-r0 < 3.12.8-r0 +3.12.8-r0 < 3.12.8-r1 +3.12.8-r1 < 3.12.8-r2 +3.12.8-r2 < 3.12.8-r3 +3.12.8-r3 < 3.12.8-r4 +3.12.8-r4 < 3.12.8-r5 +3.12.8-r5 < 3.12.8-r6 +3.12.8-r6 < 3.12.9-r0 +3.12.9-r0 < 3.12.9-r6 +3.12.9-r6 < 3.12.10-r0 +3.12.10-r0 < 3.12.10-r6 +3.12.10-r6 < 3.12.11-r0 +3.12.11-r0 < 3.12.11-r1 +3.12.11-r1 < 3.12.11-r6 +3.12.11-r6 < 3.13.1-r0 +3.13.1-r0 < 3.13.1-r1 +3.13.1-r1 < 3.13.1-r6 +3.13.1-r6 < 3.13.3-r0 +3.13.3-r0 < 3.13.3-r6 +3.13.3-r6 < 3.13.4-r0 +3.13.4-r0 < 3.13.4-r1 +3.13.4-r1 < 3.13.4-r6 +3.13.4-r6 < 3.13.5-r0 +3.13.5-r0 < 3.13.5-r6 +3.13.5-r6 < 3.13.6-r0 +3.13.6-r0 < 3.13.6-r6 +3.13.6-r6 < 3.14-r0 +3.14-r0 < 3.14-r6 +3.14-r6 < 3.14.1-r0 +3.14.1-r0 < 3.14.1-r6 +3.14.1-r6 < 3.14.1.1.93-r0 +3.14.1.1.93-r0 < 3.14.1.1.93-r6 +3.14.1.1.93-r6 < 3.14.3-r0 +3.14.3-r0 < 3.14.3-r6 +3.14.3-r6 < 3.15.1-r0 +3.15.1-r0 < 3.15.1-r1 +3.15.1-r1 < 3.15.1-r2 +3.15.1-r2 < 3.15.1-r6 +3.15.1-r6 < 3.15.2-r0 +3.15.2-r0 < 3.15.2-r6 +3.15.2-r6 < 3.15.3-r0 +3.15.3-r0 < 3.15.3-r6 +3.15.3-r6 < 3.15.3.1-r0 +3.15.3.1-r0 < 3.15.3.1-r6 +3.15.3.1-r6 < 3.15.4-r0 +3.15.4-r0 < 3.15.4-r6 +3.15.4-r6 < 3.15.5-r0 +3.15.5-r0 < 3.15.5-r6 +3.15.5-r6 < 3.16-r0 +3.16-r0 < 3.16-r6 +3.16-r6 < 3.16.1-r0 +3.16.1-r0 < 3.16.1-r6 +3.16.1-r6 < 3.16.3-r0 +3.16.3-r0 < 3.16.3-r6 +3.16.3-r6 < 3.17.1-r0 +3.17.1-r0 < 3.17.1-r6 +3.17.1-r6 < 3.17.2-r0 +3.17.2-r0 < 3.17.2-r6 +3.17.2-r6 < 3.17.3-r0 +3.17.3-r0 < 3.17.3-r6 +3.17.3-r6 < 3.17.4-r0 +3.17.4-r0 < 3.17.4-r6 +3.17.4-r6 < 3.18-r0 +3.18-r0 < 3.18-r6 +3.18-r6 < 3.18.1-r0 +3.18.1-r0 < 3.18.1-r6 +3.18.1-r6 < 3.19.2-r0 +3.19.2-r0 < 3.19.2-r1 +3.19.2-r1 < 3.19.2-r6 +3.19.2-r6 < 3.20-r0 +3.20-r0 < 3.20-r6 +3.20-r6 < 3.20.1-r0 +3.20.1-r0 < 3.20.1-r6 +3.20.1-r6 < 3.20.2-r6 +3.20.2-r6 < 3.21-r0 +3.21-r0 < 3.21-r6 +3.21-r6 < 3.21.1-r6 +3.21.1-r6 < 3.22-r0 +3.22-r0 < 3.22-r6 +3.22-r6 < 3.22.1-r0 +3.22.1-r0 < 3.22.1-r6 +3.22.1-r6 < 3.22.3-r0 +3.22.3-r0 < 3.22.3-r6 +3.22.3-r6 < 3.23-r0 +3.23-r0 < 3.23-r6 +3.23-r6 < 3.26-r0 +3.26-r0 < 3.26-r6 +3.26-r6 < 3.27.1-r0 +3.27.1-r0 < 3.27.1-r6 +3.27.1-r6 < 3.27.2-r0 +3.27.2-r0 < 3.27.2-r6 +3.27.2-r6 < 3.28.1-r0 +3.28.1-r0 < 3.28.1-r1 +3.28.1-r1 < 3.28.1-r6 +3.28.1-r6 < 3.30-r0 +3.30-r0 < 3.30-r1 +3.30-r1 < 3.30-r2 +3.30-r2 < 3.30-r6 +3.30-r6 < 3.30.1-r0 +3.30.1-r0 < 3.30.1-r6 +3.30.1-r6 < 3.31-r0 +3.31-r0 < 3.31-r6 +3.31-r6 < 3.32-r0 +3.32-r0 < 3.32-r6 +3.32-r6 < 3.33-r0 +3.33-r0 < 3.33-r6 +3.33-r6 < 3.34-r0 +3.34-r0 < 3.34-r6 +3.34-r6 < 3.34.1-r0 +3.34.1-r1 < 3.34.1-r6 +3.34.1-r6 < 3.36.1-r0 +3.36.1-r0 < 3.36.1-r6 +3.36.1-r6 < 3.38-r0 +3.38-r0 < 3.38-r1 +3.38-r1 < 3.38-r6 +3.38-r6 < 3.39-r0 +3.39-r0 < 3.39-r6 +3.39-r6 < 3.41-r0 +3.41-r0 < 3.41-r6 +3.41-r6 < 3.43-r0 +3.43-r0 < 3.43-r1 +3.43-r1 < 3.43-r6 +3.43-r6 < 3.44-r0 +3.44-r0 < 3.44-r6 +3.44-r6 < 3.45-r0 +3.45-r0 < 3.45-r6 +3.45-r6 < 3.46-r0 +3.46-r0 < 3.46-r6 +3.46-r6 < 3.46.1-r0 +3.46.1-r0 < 3.46.1-r6 +3.46.1-r6 < 3.47-r0 +3.47-r0 < 3.47-r6 +3.47-r6 < 3.47.1-r0 +3.47.1-r0 < 3.48-r0 +3.48-r0 < 3.49-r0 +3.49-r0 < 3.49.1-r0 +3.49.1-r0 < 3.49.2-r0 +3.49.2-r0 < 3.50-r0 +3.50-r0 < 3.51-r0 +3.51-r0 < 3.51.1-r0 +3.51.1-r0 < 3.52-r0 +3.52-r0 < 3.52.1-r0 +3.52.1-r0 < 3.53.1-r0 +3.53.1-r0 < 3.54-r0 +3.54-r0 < 3.55-r0 +3.55-r0 < 3.55-r1 +3.55-r1 < 3.57-r0 +3.57-r0 < 3.57-r1 +3.57-r1 < 3.58-r0 +3.58-r0 < 3.59-r0 +3.59-r0 < 3.60-r0 +3.60-r0 < 3.60-r1 +3.60-r1 < 3.60-r2 +3.60-r2 < 3.60.1-r0 +3.60.1-r0 < 3.61-r0 +3.61-r0 < 3.62-r0 +3.62-r0 < 3.63-r0 +3.63-r0 < 3.63-r1 +3.63-r1 < 3.64-r0 +3.64-r0 < 3.65-r0 +3.65-r0 < 3.66-r0 +3.66-r0 < 3.67-r0 +3.67-r0 < 3.68-r0 +3.68-r0 < 3.69-r0 +3.69-r0 < 3.69.1-r0 +3.69.1-r0 < 3.70-r0 +3.70-r0 < 3.71-r0 +3.71-r0 < 3.72-r0 +3.72-r0 < 3.73-r0 +3.73-r0 < 3.73.1-r0 +3.73.1-r0 < 3.75-r0 +3.75-r0 < 3.76-r0 +3.76-r0 < 3.76.1-r0 +3.76.1-r0 < 3.77-r0 +3.77-r0 < 3.78-r0 +3.78-r0 < 3.78.1-r0 +3.78.1-r0 < 3.79-r0 +3.79-r0 < 3.80-r0 +3.80-r0 < 3.81-r0 +3.81-r0 < 3.82-r0 +3.82-r0 < 3.83-r0 +3.83-r0 < 3.84-r0 +3.84-r0 < 3.84-r1 +3.84-r1 < 3.85-r0 +3.85-r0 < 3.86-r0 +3.86-r0 < 3.87-r0 +3.87-r0 < 3.88.1-r0 +3.88.1-r0 < 3.89-r0 +3.89-r0 < 3.89-r1 +3.89-r1 < 3.89.1-r0 +3.89.1-r0 < 3.89.1-r1 +3.89.1-r1 < 3.89.1-r2 +3.89.1-r2 < 3.90-r0 +3.90-r0 < 3.90-r1 +3.90-r1 < 3.91-r1 +3.91-r1 < 3.92-r1 +3.92-r1 < 3.93-r1 +3.93-r1 < 3.94-r1 +3.94-r1 < 3.97-r1 +4.0.3-r3 < 4.0.3-r4 +4.0.3-r4 < 4.2.1-r0 +4.2.1-r3 < 4.3.1-r0 +4.3.1-r3 < 4.3.1-r4 +4.3.1-r4 < 4.4.0-r0 +4.4.0-r0 < 4.4.0-r4 +4.4.0-r4 < 4.5.0-r0 +4.5.0-r0 < 4.5.1-r0 +4.5.1-r1 < 4.6.0-r0 +4.6.2-r1 < 4.7.0-r0 +4.7.0-r1 < 4.8.0-r0 +4.8.0-r0 < 4.8.0-r1 +4.8.0-r1 < 4.8.0-r2 +4.8.0-r2 < 4.8.0-r3 +4.8.0-r3 < 4.8.0-r4 +4.8.0-r4 < 4.8.0-r5 +4.8.0-r5 < 4.8.0-r6 +20130222-r0 < 20170511-r0 +20170511-r0 < 20180108-r0 +20180108-r0 < 20180312-r0 +20180312-r0 < 20180807a-r0 +20180807a-r0 < 20180807a-r1 +20180807a-r1 < 20180807a-r2 +20180807a-r2 < 20190514a-r2 +20190514a-r2 < 20190618-r2 +20190618-r2 < 20190918-r2 +20190918-r2 < 20191112-r2 +20191112-r2 < 20191113-r2 +20191113-r2 < 20191115-r2 +20191115-r2 < 20200508-r2 +20200508-r2 < 20200520-r2 +20200520-r2 < 20200609-r2 +20200609-r2 < 20200616-r2 +20200616-r2 < 20201110-r2 +20201110-r2 < 20201112-r2 +20201112-r2 < 20210216-r2 +20210216-r2 < 20210608-r2 +20210608-r2 < 20220207-r2 +20220207-r2 < 20220419-r2 +20220419-r2 < 20220510-r2 +20220510-r2 < 20220809-r2 +20220809-r2 < 20221108-r2 +20221108-r2 < 20230214-r2 +20230214-r2 < 20230512-r2 +20230512-r2 < 20230516a-r2 +20230516a-r2 < 20230613-r2 +20230613-r2 < 20230808-r2 +1.2.2-r0 < 1.2.2-r1 +1.2.2-r1 < 1.2.3-r0 +1.2.4-r1 < 1.4.0-r0 +8.64-r0 < 8.70-r0 +8.70-r0 < 8.71-r0 +8.71-r0 < 8.71-r1 +8.71-r1 < 8.71-r2 +8.71-r2 < 8.71-r3 +8.71-r3 < 8.71-r4 +8.71-r4 < 9.00-r0 +9.00-r0 < 9.00-r1 +9.00-r1 < 9.00-r2 +9.00-r2 < 9.04-r0 +9.04-r0 < 9.05-r0 +9.05-r0 < 9.05-r1 +9.05-r1 < 9.06-r0 +9.06-r0 < 9.06-r1 +9.06-r1 < 9.06-r2 +9.06-r2 < 9.06-r3 +9.06-r3 < 9.07-r0 +9.07-r0 < 9.09-r0 +9.09-r0 < 9.09-r1 +9.09-r1 < 9.10-r0 +9.10-r0 < 9.10-r1 +9.10-r1 < 9.15-r0 +9.15-r0 < 9.15-r1 +9.15-r1 < 9.16-r0 +9.16-r0 < 9.16-r1 +9.16-r1 < 9.16-r2 +9.16-r2 < 9.18-r0 +9.18-r0 < 9.18-r1 +9.18-r1 < 9.19-r0 +9.19-r0 < 9.19-r1 +9.19-r1 < 9.19-r2 +9.19-r2 < 9.20-r0 +9.20-r0 < 9.20-r1 +9.20-r1 < 9.20-r2 +9.20-r2 < 9.21-r0 +9.21-r0 < 9.21-r1 +9.21-r1 < 9.21-r2 +9.21-r2 < 9.21-r3 +9.21-r3 < 9.22-r0 +9.22-r0 < 9.24-r0 +9.24-r0 < 9.25-r0 +9.25-r0 < 9.25-r1 +9.25-r1 < 9.26-r0 +9.26-r0 < 9.26-r1 +9.26-r1 < 9.26-r2 +9.26-r2 < 9.27-r0 +9.27-r0 < 9.27-r1 +9.27-r1 < 9.27-r2 +9.27-r2 < 9.27-r3 +9.27-r3 < 9.27-r4 +9.27-r4 < 9.50-r0 +9.50-r0 < 9.50-r4 +9.50-r4 < 9.51-r0 +9.51-r0 < 9.51-r4 +9.51-r4 < 9.52-r0 +9.52-r0 < 9.52-r4 +9.52-r4 < 9.53.1-r0 +9.53.1-r0 < 9.53.1-r4 +9.53.1-r4 < 9.53.2-r0 +9.53.2-r0 < 9.53.2-r4 +9.53.2-r4 < 9.53.3-r0 +9.53.3-r0 < 9.53.3-r4 +9.53.3-r4 < 9.54.0-r0 +9.54.0-r0 < 9.54.0-r1 +9.54.0-r1 < 9.55.0-r0 +9.55.0-r0 < 9.55.0-r1 +9.55.0-r1 < 9.56.1-r0 +9.56.1-r0 < 9.56.1-r1 +9.56.1-r1 < 10.0.0-r0 +10.0.0-r0 < 10.0.0-r1 +10.0.0-r1 < 10.0.0-r2 +10.0.0-r2 < 10.01.0-r0 +10.01.0-r0 < 10.01.0-r1 +10.01.0-r1 < 10.01.1-r0 +10.01.1-r0 < 10.01.1-r1 +10.01.1-r1 < 10.01.1-r2 +10.01.1-r2 < 10.01.2-r0 +10.01.2-r0 < 10.01.2-r1 +0.60-r0 < 0.61-r0 +0.61-r0 < 0.62-r0 +0.62-r0 < 0.63-r0 +0.63-r0 < 0.64-r0 +0.64-r0 < 0.64-r1 +0.64-r1 < 0.65-r0 +0.65-r0 < 0.65-r1 +0.65-r1 < 0.66-r0 +0.66-r0 < 0.66-r1 +0.66-r1 < 0.67-r0 +0.67-r0 < 0.67-r1 +0.67-r1 < 0.68-r0 +0.68-r0 < 0.68-r1 +0.68-r1 < 0.69-r0 +0.69-r0 < 0.69-r1 +0.69-r1 < 0.70-r0 +0.70-r0 < 0.70-r1 +0.70-r1 < 0.71-r0 +0.71-r0 < 0.71-r1 +0.71-r1 < 0.73-r0 +0.73-r0 < 0.73-r1 +0.73-r1 < 0.73-r2 +0.73-r2 < 0.74-r0 +0.74-r0 < 0.74-r2 +0.74-r2 < 0.75-r0 +0.75-r0 < 0.75-r2 +0.75-r2 < 0.76-r0 +0.76-r0 < 0.76-r2 +0.76-r2 < 0.77-r0 +0.77-r0 < 0.77-r1 +0.77-r1 < 0.78-r0 +0.78-r0 < 0.78-r1 +0.78-r1 < 0.79-r1 +0.79-r1 < 0.80-r1 +0.80-r1 < 0.80-r2 +0.6.28-r0 < 0.6.28-r1 +0.6.28-r1 < 0.6.28-r2 +0.6.28-r2 < 0.6.29-r0 +0.6.29-r0 < 0.6.30-r0 +0.6.30-r0 < 0.6.30-r1 +0.6.30-r1 < 0.6.30-r2 +0.6.30-r2 < 0.6.30-r3 +0.6.30-r3 < 0.6.30-r4 +0.6.30-r4 < 0.6.31-r0 +0.6.31-r0 < 0.6.31-r1 +0.6.31-r1 < 0.6.31-r2 +0.6.31-r2 < 0.6.31-r3 +0.6.31-r3 < 0.6.31-r4 +0.6.31-r4 < 0.6.31-r5 +0.6.31-r5 < 0.6.31-r6 +0.6.31-r6 < 0.6.31-r7 +0.6.31-r7 < 0.6.31-r8 +0.6.31-r8 < 0.6.32-r0 +0.6.32-r0 < 0.6.32-r1 +0.6.32-r1 < 0.6.32-r2 +0.6.32-r2 < 0.6.32-r3 +0.6.32-r3 < 0.6.32-r4 +0.6.32-r4 < 0.7-r0 +0.7-r0 < 0.7-r1 +0.7-r1 < 0.7-r2 +0.7-r2 < 0.7-r3 +0.7-r3 < 0.7-r4 +0.7-r4 < 0.8-r4 +1.2.1-r1 < 1.2.1-r3 +1.2.1-r4 < 1.2.1-r5 +1.2.1-r5 < 1.2.1-r6 +1.2.1-r6 < 1.3.0-r0 +1.3.1-r1 < 1.3.2-r0 +1.3.3-r0 < 1.3.3-r2 +2.0.9-r1 < 2.0.9-r2 +2.0.9-r2 < 2.1.1-r0 +2.1.1-r2 < 2.1.3-r0 +2.1.4-r0 < 2.1.4-r1 +2.1.4-r1 < 2.2.0-r0 +2.2.0-r2 < 2.2.2-r0 +2.3.2-r1 < 2.3.2-r2 +2.3.7-r0 < 2.3.8-r0 +2.3.8-r1 < 2.3.9-r0 +2.3.9-r0 < 2.3.10-r0 +2.3.10-r0 < 2.3.10-r1 +2.3.10-r1 < 2.3.10-r2 +2.3.10-r2 < 2.3.11-r0 +2.3.11-r0 < 2.3.12-r0 +2.3.12-r0 < 2.3.12-r1 +2.3.12-r1 < 2.3.14-r0 +2.3.14-r0 < 2.3.14-r1 +2.3.14-r1 < 2.4.0-r0 +2.4.6-r4 < 2.4.6-r5 +2.4.6-r5 < 2.4.7-r0 +2.4.8-r1 < 2.4.8-r2 +2.4.8-r2 < 2.4.8-r3 +2.4.8-r3 < 2.4.8-r4 +2.4.8-r4 < 2.4.9-r0 +2.4.9-r1 < 2.4.9-r4 +2.4.9-r4 < 2.4.10-r1 +2.4.10-r1 < 2.4.10-r4 +2.4.10-r4 < 2.4.11-r4 +2.4.11-r4 < 2.5.0-r0 +2.5.5-r1 < 2.5.6-r0 +2.5.6-r0 < 2.5.6-r1 +2.5.6-r1 < 2.5.7-r0 +2.5.7-r0 < 2.5.8-r0 +2.5.8-r0 < 2.6.0-r0 +2.6.2-r1 < 2.6.3-r1 +2.6.3-r1 < 2.6.4-r1 +2.6.4-r1 < 2.6.5-r1 +0.8.53-r0 < 0.8.54-r0 +0.8.54-r0 < 0.8.54-r1 +0.8.54-r1 < 1.0.4-r0 +1.0.5-r0 < 1.0.11-r0 +1.0.11-r0 < 1.0.11-r1 +1.0.11-r1 < 1.0.14-r0 +1.0.14-r0 < 1.0.15-r0 +1.0.15-r0 < 1.2.2-r0 +1.2.4-r0 < 1.2.5-r0 +1.2.8-r0 < 1.4.0-r0 +1.4.3-r1 < 1.4.4-r0 +1.4.4-r2 < 1.4.5-r0 +1.6.0-r3 < 1.6.1-r0 +1.6.2-r1 < 1.6.2-r2 +1.6.2-r2 < 1.6.2-r3 +1.6.2-r3 < 1.6.3-r0 +1.8.0-r3 < 1.8.1-r0 +1.8.1-r1 < 1.9.11-r0 +1.9.11-r0 < 1.9.14-r0 +1.9.14-r0 < 1.9.14-r1 +1.9.14-r1 < 1.10.0-r0 +1.10.1-r1 < 1.10.1-r2 +1.10.1-r2 < 1.10.1-r3 +1.10.1-r3 < 1.10.1-r4 +1.10.1-r4 < 1.10.1-r5 +1.10.1-r5 < 1.10.1-r6 +1.10.1-r6 < 1.10.1-r7 +1.10.1-r7 < 1.10.1-r8 +1.10.1-r8 < 1.10.1-r9 +1.10.1-r9 < 1.10.2-r0 +1.10.2-r1 < 1.10.2-r9 +1.10.2-r9 < 1.10.3-r0 +1.10.3-r1 < 1.10.3-r2 +1.10.3-r2 < 1.10.3-r3 +1.10.3-r3 < 1.10.3-r4 +1.10.3-r4 < 1.10.3-r5 +1.10.3-r5 < 1.12.0-r0 +1.12.0-r1 < 1.12.0-r2 +1.12.0-r2 < 1.12.1-r0 +1.12.1-r1 < 1.12.1-r2 +1.12.1-r2 < 1.12.1-r3 +1.12.1-r3 < 1.12.2-r0 +1.12.2-r0 < 1.12.2-r1 +1.12.2-r1 < 1.12.2-r2 +1.12.2-r2 < 1.12.2-r3 +1.12.2-r3 < 1.12.2-r4 +1.12.2-r4 < 1.12.2-r5 +1.12.2-r5 < 1.12.2-r6 +1.12.2-r6 < 1.14.0-r0 +1.14.0-r1 < 1.14.0-r2 +1.14.0-r2 < 1.14.1-r0 +1.14.2-r2 < 1.16.0-r0 +1.16.0-r4 < 1.16.1-r0 +1.16.1-r4 < 1.16.1-r5 +1.16.1-r5 < 1.16.1-r6 +1.16.1-r6 < 1.16.1-r7 +1.16.1-r7 < 1.16.1-r8 +1.16.1-r8 < 1.18.0-r0 +1.18.0-r0 < 1.18.0-r1 +1.18.0-r1 < 1.18.0-r2 +1.18.0-r2 < 1.18.0-r3 +1.18.0-r3 < 1.18.0-r4 +1.18.0-r4 < 1.18.0-r5 +1.18.0-r5 < 1.18.0-r6 +1.18.0-r6 < 1.18.0-r7 +1.18.0-r7 < 1.18.0-r8 +1.18.0-r8 < 1.18.0-r9 +1.18.0-r9 < 1.18.0-r10 +1.18.0-r10 < 1.18.0-r11 +1.18.0-r11 < 1.18.0-r12 +1.18.0-r12 < 1.18.0-r13 +1.18.0-r13 < 1.18.0-r14 +1.18.0-r14 < 1.18.0-r15 +1.18.0-r15 < 1.20.0-r0 +1.20.0-r0 < 1.20.1-r0 +1.20.1-r1 < 1.20.1-r2 +1.20.1-r2 < 1.20.1-r3 +1.20.1-r3 < 1.20.1-r4 +1.20.1-r4 < 1.20.1-r5 +1.20.1-r5 < 1.20.1-r6 +1.20.1-r6 < 1.20.1-r7 +1.20.1-r7 < 1.20.1-r8 +1.20.1-r8 < 1.20.1-r9 +1.20.1-r9 < 1.20.1-r10 +1.20.1-r10 < 1.20.1-r11 +1.20.1-r11 < 1.20.1-r12 +1.20.1-r12 < 1.20.1-r13 +1.20.1-r13 < 1.20.2-r0 +1.20.2-r2 < 1.22.0-r0 +1.22.0-r0 < 1.22.0-r1 +1.22.0-r1 < 1.22.0-r2 +1.22.0-r2 < 1.22.0-r3 +1.22.0-r3 < 1.22.0-r4 +1.22.0-r4 < 1.22.0-r5 +1.22.0-r5 < 1.22.0-r6 +1.22.0-r6 < 1.22.0-r7 +1.22.0-r7 < 1.22.0-r8 +1.4.16-r0 < 1.4.16-r1 +1.4.16-r1 < 1.4.16-r2 +1.4.16-r2 < 1.4.16-r3 +1.4.16-r3 < 1.4.16-r4 +1.4.16-r4 < 1.4.18-r0 +1.4.21-r0 < 1.4.22-r0 +0.7.3-r0 < 0.7.4-r0 +0.7.4-r0 < 0.8.0-r0 +0.8.0-r1 < 0.9.0-r0 +0.9.0-r0 < 0.10.0-r0 +0.10.0-r2 < 1.0.0-r0 +1.0.0-r1 < 1.1.0-r0 +1.1.0-r1 < 1.2.0-r0 +1.2.0-r2 < 1.3.0-r0 +1.3.0-r4 < 1.4.0-r0 +1.4.0-r1 < 1.4.0-r2 +1.4.0-r2 < 1.4.0-r3 +1.4.0-r3 < 1.4.0-r4 +1.4.0-r4 < 1.4.0-r5 +1.4.0-r5 < 1.5.0-r0 +1.5.0-r1 < 1.6.0-r1 +1.6.0-r1 < 1.8.0-r1 +0.168-r0 < 0.168-r1 +0.168-r1 < 0.168-r2 +1.2.3-r0 < 1.3-r0 +1.3-r1 < 1.3.1-r0 +1.3.1-r0 < 1.3.2-r0 +1.3.2-r0 < 1.3.4-r0 +1.3.4-r0 < 1.4-r0 +1.4-r1 < 1.4.1-r0 +1.4.4-r1 < 1.4.8-r0 +1.4.8-r0 < 1.4.8-r1 +1.4.8-r1 < 1.4.8-r2 +1.4.8-r2 < 1.4.9-r0 +1.4.9-r0 < 1.4.10-r0 +1.4.10-r0 < 1.4.10-r1 +1.4.10-r1 < 1.4.10-r2 +1.4.10-r2 < 1.4.10-r3 +1.4.10-r3 < 1.4.11-r0 +1.4.11-r0 < 1.4.11-r1 +1.4.11-r1 < 1.4.12-r0 +1.4.12-r0 < 1.4.12-r1 +1.4.12-r1 < 1.4.12-r2 +1.4.12-r2 < 1.4.13-r0 +1.4.14-r0 < 1.4.14-r1 +1.4.14-r1 < 1.4.14-r2 +1.4.14-r2 < 1.4.14-r3 +1.4.14-r3 < 1.4.14-r4 +1.4.14-r4 < 1.4.14-r5 +1.4.14-r5 < 1.4.15-r0 +1.4.15-r4 < 1.5.1-r0 +1.5.3-r1 < 1.5.4-r0 +1.5.7-r0 < 1.6.1-r0 +1.6.4-r1 < 1.6.7-r0 +1.6.7-r0 < 1.6.7-r1 +1.6.7-r1 < 1.6.8-r0 +1.6.9-r0 < 1.6.10-r0 +1.6.12-r1 < 1.6.12-r2 +1.6.12-r2 < 2.0.5-r0 +2.0.5-r0 < 2.0.7-r0 +2.0.13-r0 < 2.0.14-r0 +2.0.14-r1 < 2.0.14-r2 +2.0.14-r2 < 2.0.15-r0 +2.0.15-r0 < 2.0.15-r1 +2.0.15-r1 < 2.0.15-r2 +2.0.15-r2 < 2.0.15-r3 +2.20.51.0.4-r1 < 2.20.51.0.12-r0 +2.20.51.0.12-r0 < 2.21-r0 +2.21-r0 < 2.21.1-r0 +2.21.1-r0 < 2.22-r0 +2.22-r0 < 2.22-r1 +2.22-r1 < 2.23-r0 +2.23-r0 < 2.23.1-r0 +2.23.1-r0 < 2.23.2-r0 +2.23.2-r0 < 2.23.2-r1 +2.23.2-r1 < 2.23.2-r2 +2.23.2-r2 < 2.23.2-r3 +2.23.2-r3 < 2.23.2-r4 +2.23.2-r4 < 2.23.2-r5 +2.23.2-r5 < 2.24-r0 +2.24-r0 < 2.24-r1 +2.24-r1 < 2.24-r2 +2.24-r2 < 2.24-r3 +2.24-r3 < 2.24-r4 +2.24-r4 < 2.24-r5 +2.24-r5 < 2.25-r0 +2.25-r0 < 2.25-r1 +2.25-r1 < 2.25-r2 +2.25-r2 < 2.25-r3 +2.25-r3 < 2.25.1-r0 +2.25.1-r0 < 2.25.1-r3 +2.25.1-r3 < 2.26-r0 +2.26-r0 < 2.26-r3 +2.26-r3 < 2.26.1-r0 +2.26.1-r0 < 2.26.1-r3 +2.26.1-r3 < 2.27-r0 +2.27-r0 < 2.27-r1 +2.27-r1 < 2.28-r0 +2.28-r0 < 2.28-r1 +2.28-r1 < 2.28-r2 +2.28-r2 < 2.28-r3 +2.28-r3 < 2.30-r0 +2.30-r0 < 2.30-r1 +2.30-r1 < 2.30-r2 +2.30-r2 < 2.30-r3 +2.30-r3 < 2.30-r4 +2.30-r4 < 2.30-r5 +2.30-r5 < 2.31.1-r0 +2.31.1-r1 < 2.31.1-r2 +2.31.1-r2 < 2.32-r0 +2.32-r0 < 2.32-r2 +2.32-r2 < 2.33.1-r0 +2.33.1-r0 < 2.33.1-r1 +2.33.1-r1 < 2.34-r0 +2.34-r0 < 2.34-r1 +2.34-r1 < 2.35.1-r0 +2.35.1-r1 < 2.35.2-r0 +2.35.2-r0 < 2.35.2-r1 +2.35.2-r1 < 2.35.2-r2 +2.35.2-r2 < 2.37-r0 +2.37-r0 < 2.37-r1 +2.37-r1 < 2.37-r2 +2.37-r2 < 2.37-r3 +2.37-r3 < 2.37-r4 +2.37-r4 < 2.38-r0 +2.38-r0 < 2.38-r1 +2.38-r1 < 2.38-r2 +2.38-r2 < 2.38-r3 +2.38-r3 < 2.38-r4 +2.38-r4 < 2.39-r0 +2.39-r0 < 2.39-r1 +2.39-r1 < 2.39-r2 +2.39-r2 < 2.39-r3 +2.39-r3 < 2.40-r3 +0.1.7-r0 < 0.1.7-r1 +0.1.7-r1 < 0.1.7-r2 +0.1.7-r2 < 0.1.7-r3 +0.1.7-r3 < 0.1.7-r4 +0.1.7-r4 < 0.1.7-r5 +0.1.7-r5 < 0.1.8-r5 +0.6.2-r2 < 0.6.2-r3 +0.6.2-r3 < 0.6.2-r4 +0.6.2-r4 < 0.6.2-r5 +0.6.2-r5 < 0.6.3-r0 +0.6.3-r0 < 0.6.4-r0 +0.6.4-r0 < 0.6.4-r1 +0.6.4-r1 < 0.6.5-r0 +0.6.5-r0 < 0.6.8-r0 +0.6.8-r0 < 0.6.9-r0 +0.6.9-r0 < 0.6.11-r0 +0.6.11-r0 < 0.6.11-r1 +0.6.11-r1 < 0.6.12-r0 +0.6.12-r0 < 0.6.12-r1 +2.1.4-r0 < 2.2.0-r0 +2.2.6-r1 < 2.4.2-r1 +2.4.2-r1 < 2.4.3-r1 +2.4.5-r1 < 2.5.3-r1 +2.5.3-r1 < 2.5.4-r1 +2.5.4-r1 < 2.5.5-r1 +2.5.5-r1 < 2.6.3-r1 +2.6.4-r1 < 2.7.2-r1 +2.7.2-r1 < 2.7.3-r1 +2.7.3-r1 < 2.7.4-r1 +2.7.4-r1 < 2.7.5-r1 +2.7.5-r1 < 2.9.2-r1 +2.9.2-r1 < 3.0.2-r1 +3.0.2-r1 < 3.1.2-r1 +3.1.2-r1 < 3.1.3-r1 +3.1.3-r1 < 3.1.4-r1 +0.2.0-r0 < 0.2.0-r1 +0.2.0-r1 < 0.2.0-r2 +0.2.0-r2 < 0.2.1-r0 +0.2.1-r0 < 0.2.1-r1 +0.2.1-r1 < 0.2.1-r2 +0.2.1-r2 < 0.2.1-r3 +0.2.1-r3 < 0.2.3_rc2-r0 +0.2.3_rc2-r0 < 0.2.3_rc2-r1 +0.2.3_rc2-r1 < 0.2.3-r0 +0.2.3-r0 < 0.2.3-r1 +0.2.3-r1 < 0.2.3-r2 +0.2.3-r2 < 0.2.3-r3 +0.52-r0 < 0.52-r1 +0.52-r1 < 0.52-r2 +0.52-r2 < 0.52-r3 +0.52-r3 < 0.52-r4 +0.52-r4 < 0.53.1-r0 +0.53.1-r0 < 0.53.1-r1 +0.53.1-r1 < 2012.55-r0 +2012.55-r0 < 2013.58-r0 +2013.58-r0 < 2014.63-r0 +2014.63-r0 < 2014.65-r0 +2014.65-r0 < 2014.66-r0 +2014.66-r0 < 2014.66-r1 +2014.66-r1 < 2015.67-r0 +2015.67-r0 < 2015.68-r0 +2015.68-r0 < 2015.68-r1 +2015.68-r1 < 2015.68-r2 +2015.68-r2 < 2015.70-r2 +2015.70-r2 < 2015.71-r0 +2015.71-r0 < 2015.71-r1 +2015.71-r1 < 2016.73-r0 +2016.73-r0 < 2016.73-r1 +2016.73-r1 < 2016.74-r0 +2016.74-r0 < 2016.74-r1 +2016.74-r1 < 2017.75-r0 +2017.75-r0 < 2017.75-r1 +2017.75-r1 < 2018.76-r0 +2018.76-r0 < 2018.76-r1 +2018.76-r1 < 2018.76-r2 +2018.76-r2 < 2019.78-r0 +2019.78-r0 < 2019.78-r2 +2019.78-r2 < 2020.79-r0 +2020.79-r0 < 2020.80-r0 +2020.80-r0 < 2020.81-r0 +2020.81-r0 < 2020.81-r1 +2020.81-r1 < 2022.82-r0 +2022.82-r0 < 2022.82-r1 +2022.82-r1 < 2022.82-r2 +2022.82-r2 < 2022.83-r2 +2.0_pre2-r0 < 2.0_pre3-r0 +2.0_pre3-r0 < 2.0_pre4-r0 +2.0_pre4-r0 < 2.0_pre5-r0 +2.0_pre5-r0 < 2.0_pre6-r0 +2.0_pre6-r0 < 2.0_pre6-r1 +2.0_pre6-r1 < 2.0_pre7-r0 +2.0_pre7-r0 < 2.0_pre8-r0 +2.0_pre8-r0 < 2.0_pre9-r0 +2.0_pre9-r0 < 2.0_pre10-r0 +2.0_pre10-r0 < 2.0_pre11-r0 +2.0_pre11-r0 < 2.0_pre11-r1 +2.0_pre11-r1 < 2.0_pre11-r2 +2.0_pre11-r2 < 2.0_pre12-r0 +2.0_pre12-r0 < 2.0_pre12-r1 +2.0_pre12-r1 < 2.0_pre12-r2 +2.0_pre12-r2 < 2.0_pre13-r0 +2.0_pre13-r0 < 2.0_pre13-r1 +2.0_pre13-r1 < 2.0_pre14-r0 +2.0_pre14-r0 < 2.0_pre14-r1 +2.0_pre14-r1 < 2.0_pre14-r2 +2.0_pre14-r2 < 2.0_pre15-r0 +2.0_pre15-r0 < 2.0_pre16-r0 +2.0_pre16-r0 < 2.0_pre17-r0 +2.0_pre17-r0 < 2.0_pre17-r1 +2.0_pre17-r1 < 2.0_pre17-r2 +2.0_pre17-r2 < 2.0_rc1-r0 +2.0_rc1-r0 < 2.0_rc1-r1 +2.0_rc1-r1 < 2.0_rc1-r2 +2.0_rc1-r2 < 2.0_rc2-r0 +2.0_rc2-r0 < 2.0_rc3-r0 +2.0_rc3-r0 < 2.0_rc3-r3 +2.0_rc3-r3 < 2.0_rc4-r0 +2.0_rc4-r0 < 2.0_rc5-r0 +2.0_rc5-r0 < 2.0_rc5-r1 +2.0_rc5-r1 < 2.0_rc6-r0 +2.0_rc6-r0 < 2.0_rc7-r0 +2.0_rc7-r0 < 2.0-r0 +2.0.2-r2 < 2.0.2-r3 +2.0.2-r3 < 2.0.2-r4 +2.0.2-r4 < 2.0.2-r5 +2.0.2-r5 < 2.0.2-r6 +2.0.2-r6 < 2.0.3-r0 +2.0.3-r0 < 2.0.3-r1 +2.0.3-r1 < 2.0.4-r0 +2.0.5-r2 < 2.0.5-r3 +2.0.5-r3 < 2.0.6-r0 +2.0.6-r1 < 2.0.6-r2 +2.0.6-r2 < 2.0.7-r0 +2.0.7-r0 < 2.0.7-r1 +2.0.7-r1 < 2.0.7-r2 +2.0.7-r2 < 2.0.7-r3 +2.0.7-r3 < 2.0.7-r4 +2.0.7-r4 < 2.0.7-r5 +2.0.7-r5 < 2.0.7-r6 +2.0.7-r6 < 2.0.8-r0 +2.0.9-r0 < 2.1.0_rc1-r0 +2.1.0_rc1-r0 < 2.1.0_rc1-r1 +2.1.0_rc1-r1 < 2.1.0_rc1-r2 +2.1.0_rc1-r2 < 2.1.0-r0 +2.1.0-r2 < 2.2.0_pre1-r0 +2.2.0_pre1-r0 < 2.2.0_pre1-r1 +2.2.0_pre1-r1 < 2.2.0_pre1-r2 +2.2.0_pre1-r2 < 2.2.0_rc1-r0 +2.2.0_rc1-r0 < 2.2.0-r0 +2.2.5-r0 < 2.3.0-r0 +2.3.0-r3 < 2.3.0-r4 +2.3.0-r4 < 2.3.1-r0 +2.3.2-r2 < 2.3.2-r3 +2.3.2-r3 < 2.3.3-r0 +2.3.3-r1 < 2.3.4-r0 +2.3.5-r0 < 2.4.0_rc1-r0 +2.4.0_rc1-r0 < 2.4.0_rc2-r0 +2.4.0_rc2-r0 < 2.4.0_rc2-r1 +2.4.0_rc2-r1 < 2.4.0_rc3-r0 +2.4.0_rc3-r0 < 2.4.0-r0 +2.4.0-r4 < 2.4.0-r5 +2.4.0-r5 < 2.4.0-r6 +2.4.0-r6 < 2.4.1-r0 +2.4.5-r0 < 2.5.0_rc1-r0 +2.5.0_rc1-r0 < 2.5.0-r0 +2.5.0-r0 < 2.6.0_rc1-r0 +2.6.0_rc1-r0 < 2.6.0_rc1-r1 +2.6.0_rc1-r1 < 2.6.0_rc1-r2 +2.6.0_rc1-r2 < 2.6.0_rc2-r0 +2.6.0_rc2-r0 < 2.6.0_rc3-r0 +2.6.0_rc3-r0 < 2.6.0_rc4-r0 +2.6.0_rc4-r0 < 2.6.0-r0 +2.6.2-r0 < 2.6.3-r0 +2.6.4-r1 < 2.6.5-r0 +2.6.5-r1 < 2.6.6-r0 +2.6.6-r0 < 2.6.6-r1 +2.6.6-r1 < 2.6.7-r0 +2.6.7-r0 < 2.6.7-r1 +2.6.7-r1 < 2.6.7-r2 +2.6.7-r2 < 2.6.8-r0 +2.6.8-r0 < 2.6.8-r1 +2.6.8-r1 < 2.6.8-r2 +2.6.8-r2 < 2.7.0-r0 +2.7.0-r1 < 2.7.0-r2 +2.7.0-r2 < 2.7.0-r3 +2.7.0-r3 < 2.7.0-r4 +2.7.0-r4 < 2.7.0-r5 +2.7.0-r5 < 2.7.1-r0 +2.7.2-r0 < 2.8.0-r0 +2.8.1-r2 < 2.9.0-r0 +2.9.0-r0 < 2.9.1-r0 +2.9.1-r2 < 2.9.1-r3 +2.9.1-r3 < 2.10.0_rc1-r0 +2.10.0_rc1-r0 < 2.10.0-r0 +2.10.0-r3 < 2.10.1-r0 +2.10.4-r2 < 2.10.4-r3 +2.10.4-r3 < 2.10.4-r4 +2.10.4-r4 < 2.10.5-r0 +2.10.5-r2 < 2.10.5-r3 +2.10.5-r3 < 2.10.6-r2 +2.10.6-r3 < 2.10.6-r4 +2.10.6-r4 < 2.12.0_rc1-r0 +2.12.0_rc1-r0 < 2.12.0_rc1-r1 +2.12.0_rc1-r1 < 2.12.0_rc1-r2 +2.12.0_rc1-r2 < 2.12.0_rc2-r0 +2.12.0_rc2-r0 < 2.12.0-r0 +2.12.0-r0 < 2.12.0-r1 +2.12.0-r1 < 2.12.0-r2 +2.12.0-r2 < 2.12.0-r3 +2.12.0-r3 < 2.12.0-r4 +2.12.0-r4 < 2.12.1-r0 +2.12.2-r0 < 2.12.3-r0 +2.12.3-r0 < 2.12.4-r0 +2.12.4-r0 < 2.12.4-r1 +2.12.4-r1 < 2.12.4-r2 +2.12.4-r2 < 2.12.4-r3 +2.12.4-r3 < 2.12.5-r0 +2.12.5-r0 < 2.12.5-r1 +2.12.5-r1 < 2.12.5-r2 +1.5.6-r0 < 1.6.1-r0 +1.6.6-r0 < 1.6.9-r0 +1.6.9-r1 < 1.6.9-r2 +1.6.9-r2 < 1.6.9-r3 +1.6.9-r3 < 1.6.13-r0 +1.6.13-r0 < 1.6.15-r0 +1.6.15-r0 < 1.6.15-r1 +1.6.15-r1 < 1.6.16-r0 +1.6.17-r4 < 1.7.0-r0 +1.7.2-r1 < 1.7.2-r2 +1.7.2-r2 < 1.7.2-r3 +1.7.2-r3 < 1.7.3-r0 +1.7.6-r0 < 1.7.7-r0 +1.7.7-r0 < 1.7.8-r0 +1.7.8-r0 < 1.7.9-r0 +1.7.9-r0 < 1.7.9-r1 +1.7.9-r1 < 1.7.10-r0 +1.7.10-r0 < 1.8.0-r0 +1.8.1-r2 < 1.8.3-r0 +1.8.5-r1 < 1.8.8-r0 +1.8.9-r0 < 1.8.9-r1 +1.8.9-r1 < 1.8.10-r0 +1.8.10-r1 < 1.8.10-r2 +1.8.10-r2 < 1.8.11-r0 +1.8.11-r0 < 1.8.13-r0 +1.8.13-r0 < 1.8.13-r1 +1.8.13-r1 < 1.8.13-r2 +1.8.13-r2 < 1.9.0-r0 +1.9.0-r0 < 1.9.0-r2 +1.9.0-r2 < 1.9.1-r0 +1.9.1-r0 < 1.9.1-r2 +1.9.1-r2 < 1.9.2-r0 +1.9.2-r0 < 1.9.2-r2 +1.9.3-r1 < 1.9.3-r2 +1.9.3-r2 < 1.9.4-r0 +1.9.4-r1 < 1.9.4-r2 +1.9.4-r2 < 1.9.4-r3 +1.9.4-r3 < 1.9.5-r0 +1.9.5-r0 < 1.9.5-r1 +1.9.5-r1 < 1.9.5-r2 +1.9.5-r2 < 1.9.5-r3 +1.9.5-r3 < 1.9.7-r0 +1.9.7-r0 < 1.9.7-r1 +1.9.7-r1 < 1.10.0-r0 +1.10.0-r1 < 1.10.2-r0 +1.10.2-r1 < 1.10.4-r1 +1.10.4-r1 < 1.11.0-r0 +1.11.0-r1 < 1.11.1-r0 +1.11.1-r1 < 1.12.0-r0 +1.12.0-r1 < 1.12.2-r0 +1.12.2-r1 < 1.13.0-r0 +1.13.0-r2 < 1.14.0-r0 +1.14.1-r2 < 1.14.1-r3 +1.14.1-r3 < 1.14.1-r4 +1.14.1-r4 < 1.14.1-r5 +1.14.1-r5 < 1.14.1-r6 +1.14.1-r6 < 1.14.1-r7 +1.14.1-r7 < 1.14.1-r8 +0.13-r0 < 0.14-r0 +0.14-r0 < 0.15.1-r0 +0.15.1-r0 < 16.0.0-r0 +16.0.0-r0 < 16.0.0-r1 +16.0.0-r1 < 16.0.0-r2 +16.0.0-r2 < 16.1.0-r0 +16.1.0-r0 < 16.1.0-r1 +16.1.0-r1 < 17.0.0-r1 +17.0.0-r1 < 17.1.0-r1 +17.1.0-r1 < 17.2.0-r1 +1.7.7.1-r0 < 1.9.0-r0 +1.9.0-r0 < 1.10.1-r0 +1.10.1-r0 < 1.11.0-r0 +1.11.0-r0 < 1.12.0-r0 +1.12.0-r0 < 1.14.0-r0 +1.14.0-r0 < 1.14.1-r0 +1.14.1-r0 < 1.15.1-r0 +1.16.0-r0 < 2.0.1-r1 +2.0.1-r2 < 2.0.2-r0 +2.0.2-r3 < 2.1.2-r0 +2.2.1-r1 < 2.3.1-r0 +2.3.1-r0 < 2.4.0-r0 +2.1.2-r0 < 2.1.2-r3 +2.1.2-r3 < 2.2.0-r0 +2.2.1-r1 < 2.3.1-r1 +2.3.1-r1 < 2.4.0-r1 +2.4.0-r1 < 2.4.1-r1 +4.3.11-r1 < 4.3.12-r0 +4.3.12-r0 < 4.3.15-r0 +4.3.15-r0 < 4.3.16-r0 +4.3.16-r0 < 4.3.17-r0 +4.3.17-r0 < 5.0.0-r0 +5.0.0-r0 < 5.0.2-r0 +5.0.2-r0 < 5.0.2-r1 +5.0.2-r1 < 5.0.2-r2 +5.0.2-r2 < 5.0.4-r0 +5.0.4-r0 < 5.0.5-r0 +5.0.5-r0 < 5.0.6-r0 +5.0.6-r0 < 5.0.7-r0 +5.0.7-r0 < 5.0.8-r0 +5.0.8-r1 < 5.1-r0 +5.1-r0 < 5.1.1-r0 +5.1.1-r1 < 5.2-r0 +5.2-r0 < 5.2-r1 +5.2-r1 < 5.2-r2 +5.2-r2 < 5.2-r3 +5.2-r3 < 5.3.1-r0 +5.3.1-r0 < 5.3.1-r3 +5.3.1-r3 < 5.4.1-r0 +5.4.1-r0 < 5.4.1-r3 +5.4.1-r3 < 5.4.2-r0 +5.4.2-r0 < 5.4.2-r1 +5.4.2-r1 < 5.5-r0 +5.5-r0 < 5.5.1-r0 +5.5.1-r1 < 5.6.2-r0 +5.6.2-r0 < 5.7.1-r0 +5.7.1-r0 < 5.8-r0 +2.1.0.0-r0 < 2.1.1.0-r0 +2.1.1.0-r0 < 2.1.2.0-r0 +2.1.2.0-r0 < 2.2.0.0-r0 +2.2.0.0-r0 < 2.2.1.0-r0 +2.3.1.0-r0 < 2.3.2.0-r0 +2.3.2.0-r0 < 2.4.0.0-r0 +2.4.0.0-r0 < 2.4.1.0-r0 +2.4.1.0-r0 < 2.4.2.0-r0 +2.4.2.0-r0 < 2.4.3.0-r0 +2.4.3.0-r0 < 2.5.0-r0 +2.5.0-r0 < 2.5.2-r0 +2.5.2-r0 < 2.5.4-r0 +2.5.4-r0 < 2.5.5-r0 +2.5.5-r0 < 2.6.0-r0 +2.6.3-r0 < 2.7.0-r0 +2.7.9-r1 < 2.8.0-r1 +2.8.3-r0 < 2.8.4-r0 +2.8.4-r0 < 2.8.6-r0 +2.8.6-r3 < 2.9.1-r0 +2.9.1-r0 < 2.9.2-r0 +2.9.3-r1 < 2.9.4-r1 +2.9.6-r1 < 2.9.7-r1 +2.9.7-r1 < 2.9.9-r1 +2.9.9-r1 < 2.9.11-r1 +2.8.1-r1 < 2.8.4-r0 +2.8.4-r0 < 2.8.5-r0 +2.8.5-r1 < 2.8.5-r2 +2.8.5-r2 < 2.8.6-r0 +2.8.6-r0 < 2.8.7-r0 +2.8.7-r0 < 2.9.0-r0 +2.9.2-r0 < 2.9.3-r0 +2.9.3-r1 < 2.9.3-r2 +2.9.3-r2 < 2.9.3-r3 +2.9.3-r3 < 2.9.4-r0 +2.9.6-r0 < 2.9.7-r0 +3.1.0-r0 < 3.2.0-r0 +3.2.0-r1 < 3.2.1-r1 +3.7.11-r0 < 3.7.11-r1 +3.7.11-r1 < 3.7.14-r0 +3.7.14-r0 < 3.7.14-r1 +3.7.14-r1 < 3.7.15-r0 +3.7.15-r0 < 4.0.5-r0 +4.0.5-r1 < 4.0.7-r0 +4.0.7-r1 < 4.0.9-r0 +4.0.9-r0 < 4.0.10-r0 +4.0.10-r0 < 4.1.0-r0 +4.1.2-r0 < 4.2.2-r0 +4.2.2-r0 < 4.3.1-r0 +4.3.1-r0 < 4.3.2-r0 +4.3.2-r0 < 4.3.3-r0 +4.3.3-r0 < 4.3.4-r0 +4.3.4-r0 < 4.3.6-r0 +4.3.6-r0 < 4.3.7-r0 +4.3.7-r0 < 4.3.8-r0 +4.3.8-r0 < 4.4.0-r0 +4.4.0-r0 < 4.4.1-r0 +4.4.1-r0 < 4.4.2-r0 +4.4.2-r0 < 4.4.3-r0 +4.4.5-r0 < 4.4.6-r0 +4.4.6-r0 < 4.4.7-r0 +4.4.7-r0 < 4.4.8-r0 +4.4.8-r0 < 4.4.9-r0 +4.4.10-r0 < 4.4.11-r0 +4.4.11-r0 < 4.4.13-r0 +4.4.13-r0 < 4.4.14-r0 +4.4.14-r0 < 4.4.15-r0 +4.4.15-r0 < 4.4.15-r1 +4.4.15-r1 < 4.4.15-r2 +4.4.15-r2 < 4.4.15-r3 +4.4.15-r3 < 4.4.16-r0 +4.4.16-r0 < 4.5.0-r0 +4.5.1-r0 < 4.5.2-r0 +4.5.2-r0 < 4.5.3-r0 +4.5.3-r0 < 4.5.4-r0 +4.5.4-r0 < 4.5.5-r0 +4.5.5-r0 < 4.6.0-r0 +4.6.2-r0 < 4.6.3a-r0 +4.6.3a-r0 < 4.6.4-r0 +4.6.4-r1 < 4.6.4-r2 +4.6.4-r2 < 4.6.4-r3 +4.6.4-r3 < 4.6.5-r0 +4.6.5-r0 < 4.7.0-r0 +4.7.0-r0 < 4.7.1-r0 +4.7.1-r0 < 4.7.2-r0 +4.7.2-r0 < 4.7.3-r0 +4.7.3-r1 < 4.7.4-r0 +4.7.4-r0 < 4.7.5-r0 +4.7.5-r0 < 4.7.6-r0 +4.7.6-r0 < 4.7.7-r0 +4.7.7-r0 < 4.7.7-r1 +4.7.7-r1 < 4.7.7-r2 +4.7.7-r2 < 4.7.7-r3 +4.7.7-r3 < 4.8.0-r0 +4.8.0-r0 < 4.8.2-r0 +4.8.2-r0 < 4.8.3-r0 +4.8.3-r1 < 4.8.3-r2 +0.4.5-r0 < 0.4.6-r0 +0.4.6-r0 < 0.4.8-r0 +0.4.8-r0 < 0.5.0-r0 +0.5.0-r0 < 0.5.1-r0 +0.5.2-r1 < 0.5.3-r0 +0.5.4-r0 < 0.5.5-r0 +0.5.5-r0 < 0.6.0-r0 +0.6.0-r0 < 0.6.3-r0 +0.6.4-r0 < 0.6.5-r0 +0.6.5-r0 < 0.7.0-r0 +0.7.0-r0 < 0.7.1-r0 +0.7.2-r0 < 0.7.3-r0 +0.7.3-r1 < 0.7.4-r0 +0.7.4-r0 < 0.7.5-r0 +0.7.5-r0 < 0.7.5-r1 +0.7.5-r1 < 0.7.5-r2 +0.7.5-r2 < 0.7.5-r3 +0.7.5-r3 < 0.7.6-r0 +0.7.6-r0 < 0.7.6-r1 +0.7.6-r1 < 0.8.7-r1 +0.8.7-r1 < 0.8.8-r1 +0.8.8-r1 < 0.9.0-r1 +0.9.0-r1 < 0.9.2-r1 +0.9.2-r1 < 0.9.3-r1 +1.1.16-r1 < 1.1.17-r0 +1.1.17-r0 < 1.1.18-r0 +1.1.18-r0 < 1.1.19-r0 +1.1.19-r0 < 1.1.20-r0 +1.1.20-r0 < 1.1.21-r0 +1.1.21-r0 < 1.1.24-r0 +1.1.26-r0 < 1.1.27-r0 +1.1.27-r0 < 1.1.29-r0 +1.1.29-r0 < 1.1.31-r0 +1.1.31-r0 < 1.1.31-r1 +1.1.31-r1 < 1.1.31-r2 +1.1.31-r2 < 1.2.0-r0 +1.2.0-r0 < 1.3.0-r0 +1.3.0-r0 < 1.3.2-r0 +1.3.2-r1 < 1.3.3-r0 +2.0.10-r1 < 2.0.15-r0 +2.0.16-r0 < 2.0.16-r1 +2.0.16-r1 < 2.0.16-r2 +2.0.16-r2 < 2.0.17-r0 +2.0.21-r0 < 2.0.22-r0 +2.0.22-r1 < 2.1.0_beta751-r1 +2.1.0_beta751-r1 < 2.1.0_beta783-r1 +2.1.0_beta783-r1 < 2.1.0_beta895-r1 +2.1.0_beta895-r1 < 2.1.0-r1 +2.1.0-r1 < 2.1.1-r1 +2.1.1-r1 < 2.1.2-r1 +2.1.2-r1 < 2.1.3-r1 +2.1.3-r1 < 2.1.4-r1 +2.1.4-r1 < 2.1.5-r1 +2.1.5-r1 < 2.1.6-r1 +2.1.6-r1 < 2.1.7-r1 +2.1.7-r1 < 2.1.8-r1 +2.1.8-r1 < 2.1.9-r1 +2.1.9-r1 < 2.1.10-r1 +2.1.10-r1 < 2.1.11-r1 +2.1.11-r1 < 2.1.12-r1 +2.1.12-r1 < 2.1.13-r1 +2.1.13-r1 < 2.1.14-r1 +2.1.14-r1 < 2.1.15-r1 +2.1.15-r1 < 2.1.16-r1 +2.1.16-r1 < 2.1.17-r1 +2.1.17-r1 < 2.1.18-r1 +2.1.18-r1 < 2.1.19-r1 +2.1.19-r1 < 2.1.20-r1 +2.1.20-r1 < 2.1.21-r1 +2.1.21-r1 < 2.1.22-r1 +2.1.22-r1 < 2.1.23-r1 +2.1.23-r1 < 2.2.0-r1 +2.2.0-r1 < 2.2.1-r1 +2.2.1-r1 < 2.2.2-r1 +2.2.2-r1 < 2.2.3-r1 +2.2.3-r1 < 2.2.5-r1 +2.2.8-r1 < 2.2.9-r1 +2.2.9-r1 < 2.2.10-r1 +2.2.10-r1 < 2.2.12-r1 +2.2.12-r1 < 2.2.13-r1 +2.2.13-r1 < 2.2.14-r1 +2.2.14-r1 < 2.2.15-r1 +2.2.15-r1 < 2.2.16-r1 +2.2.16-r1 < 2.2.17-r1 +2.2.17-r1 < 2.2.18-r1 +2.2.18-r1 < 2.2.19-r1 +2.2.19-r1 < 2.2.20-r1 +2.2.20-r1 < 2.2.21-r1 +2.2.21-r1 < 2.2.23-r1 +2.2.23-r1 < 2.2.24-r1 +2.2.24-r1 < 2.2.25-r1 +2.2.25-r1 < 2.2.26-r1 +2.2.26-r1 < 2.2.27-r1 +2.2.27-r1 < 2.2.28-r1 +2.2.28-r1 < 2.2.29-r1 +2.2.29-r1 < 2.2.31-r1 +2.2.31-r1 < 2.2.33-r1 +2.2.33-r1 < 2.2.34-r1 +2.2.34-r1 < 2.2.35-r1 +2.4.0-r2 < 2.5.0-r0 +2.5.0-r0 < 2.6.0-r0 +2.6.0-r0 < 2.7.0-r0 +2.7.0-r2 < 2.8.0-r0 +2.9.0-r1 < 2.11.0-r0 +2.11.0-r3 < 2.11.0-r4 +2.11.0-r4 < 2.11.0-r5 +2.11.0-r5 < 2.11.0-r6 +2.11.0-r6 < 2.17.3-r0 +2.17.3-r0 < 2.17.3-r1 +2.17.3-r1 < 2.17.3-r2 +2.17.3-r2 < 2.18.1-r0 +2.18.1-r0 < 2.18.1-r1 +2.18.1-r1 < 2.18.1-r2 +1.892-r0 < 1.895-r0 +1.895-r0 < 1.896-r0 +1.896-r0 < 1.898-r0 +1.898-r0 < 1.899-r0 +1.899-r0 < 1.900-r0 +1.900-r0 < 1.901-r0 +1.901-r0 < 1.903-r0 +1.903-r0 < 1.905-r0 +1.905-r0 < 1.907-r0 +1.907-r0 < 1.908-r0 +1.908-r0 < 1.909-r0 +1.2.34-r0 < 1.2.35-r0 +1.2.35-r0 < 1.2.36-r0 +1.2.36-r0 < 1.2.37-r0 +1.2.37-r0 < 1.2.38-r0 +1.2.38-r0 < 1.2.39-r0 +1.2.39-r0 < 1.2.40-r0 +1.2.40-r0 < 1.4.0-r0 +1.4.5-r1 < 1.5.2-r0 +1.5.2-r2 < 1.5.4-r0 +1.5.5-r1 < 1.5.8-r0 +1.5.8-r0 < 1.5.9-r0 +1.5.9-r0 < 1.5.10-r0 +1.5.10-r0 < 1.5.11-r0 +1.5.11-r0 < 1.5.12-r0 +1.5.12-r0 < 1.5.13-r0 +1.5.13-r0 < 1.5.14-r0 +1.5.14-r0 < 1.5.15-r0 +1.5.15-r0 < 1.5.16-r0 +1.5.16-r0 < 1.5.17-r0 +1.5.17-r0 < 1.6.3-r0 +1.6.3-r0 < 1.6.5-r0 +1.6.7-r0 < 1.6.8-r0 +1.6.8-r0 < 1.6.9-r0 +1.6.10-r0 < 1.6.12-r0 +1.6.14-r0 < 1.6.15-r0 +1.6.15-r0 < 1.6.16-r0 +1.6.17-r0 < 1.6.18-r0 +1.6.18-r0 < 1.6.19-r0 +1.6.19-r0 < 1.6.20-r0 +1.6.20-r0 < 1.6.21-r0 +1.6.21-r0 < 1.6.22-r0 +1.6.22-r0 < 1.6.23-r0 +1.6.23-r0 < 1.6.23-r1 +1.6.23-r1 < 1.6.23-r2 +1.6.23-r2 < 1.6.24-r0 +1.6.24-r0 < 1.6.25-r0 +1.6.25-r0 < 1.6.26-r0 +1.6.26-r0 < 1.6.27-r0 +1.6.27-r0 < 1.6.27-r1 +1.6.27-r1 < 1.6.28-r0 +1.6.28-r0 < 1.6.29-r0 +1.6.29-r0 < 1.6.29-r1 +1.6.29-r1 < 1.6.30-r0 +1.6.30-r0 < 1.6.31-r0 +1.6.31-r0 < 1.6.32-r0 +1.6.32-r0 < 1.6.34-r0 +1.6.34-r0 < 1.6.34-r1 +1.6.34-r1 < 1.6.35-r0 +1.6.35-r0 < 1.6.35-r1 +0.096-r0 < 0.096-r1 +0.096-r1 < 0.098-r0 +0.098-r0 < 0.098-r1 +0.098-r1 < 0.098-r2 +0.098-r2 < 0.202-r0 +0.202-r0 < 0.204-r0 +0.204-r0 < 0.206-r0 +0.206-r0 < 1.0-r0 +1.0-r3 < 1.2-r0 +1.2-r1 < 1.4-r0 +1.4-r2 < 1.6.0-r0 +1.6.0-r2 < 1.6.1-r0 +1.6.3-r2 < 1.6.3-r3 +1.6.3-r3 < 1.6.3-r4 +1.6.3-r4 < 1.6.4-r0 +1.6.4-r1 < 1.6.4-r4 +1.6.4-r4 < 1.6.5-r0 +1.6.5-r2 < 1.6.5-r3 +1.6.5-r3 < 1.6.6-r0 +1.6.6-r1 < 1.7.0-r1 +1.4.2.3-r0 < 1.4.2.3-r1 +1.4.2.3-r1 < 1.4.2.3-r2 +1.4.2.3-r2 < 1.4.2.3-r3 +1.4.2.3-r3 < 1.4.2.3-r4 +1.4.2.3-r4 < 1.4.2.3-r5 +1.4.2.3-r5 < 1.5.21-r0 +1.5.21-r0 < 1.5.21-r1 +1.5.21-r1 < 1.5.21-r2 +1.5.21-r2 < 1.5.22-r0 +1.5.22-r0 < 1.5.23-r0 +1.5.23-r0 < 1.5.23-r1 +1.5.23-r1 < 1.5.24-r1 +1.5.24-r1 < 1.5.24-r2 +1.5.24-r2 < 1.5.24-r3 +1.5.24-r3 < 1.6.0-r0 +1.6.2-r0 < 1.7.0-r0 +1.7.2-r1 < 1.8.0-r0 +1.8.3-r1 < 1.9.0-r0 +1.9.3-r0 < 1.9.4-r0 +1.9.4-r1 < 1.9.5-r1 +1.9.5-r1 < 1.10.0-r1 +2.6-r1 < 2.7-r0 +2.8-r0 < 2.8-r3 +2.8-r3 < 3.0-r0 +3.0-r0 < 3.0-r3 +3.0-r3 < 3.2-r0 +3.2-r0 < 3.2-r3 +3.2-r3 < 3.2.1-r0 +3.2.1-r0 < 3.2.1-r3 +1.5.2-r7 < 1.5.3-r0 +1.5.3-r0 < 1.5.3-r2 +1.5.3-r4 < 1.5.3-r5 +1.5.3-r5 < 1.5.3-r6 +1.5.3-r6 < 1.5.3-r7 +1.5.3-r7 < 1.5.3-r8 +1.5.3-r8 < 1.5.4-r0 +1.5.4-r1 < 3.0.2-r4 +3.0.2-r6 < 3.0.3-r0 +3.0.3-r1 < 3.0.4-r0 +3.0.4-r0 < 3.1.0-r0 +3.1.0-r0 < 3.1.0-r1 +3.1.0-r1 < 3.1.1-r0 +3.1.1-r2 < 3.1.1-r3 +3.1.1-r3 < 3.1.2-r0 +3.1.2-r1 < 3.1.3-r0 +3.1.3-r2 < 3.1.4-r0 +3.1.4-r0 < 3.1.4-r1 +3.1.4-r1 < 3.2.0-r0 +3.2.0-r1 < 3.2.0-r2 +3.2.0-r2 < 3.2.0-r3 +3.2.0-r3 < 3.2.1-r0 +3.2.2-r3 < 3.2.3-r0 +3.2.3-r3 < 3.3.0-r0 +3.3.0-r0 < 3.3.1-r0 +3.3.2-r1 < 3.3.3-r0 +3.3.3-r0 < 4.0.1-r0 +4.0.1-r3 < 4.0.2-r0 +4.0.3-r1 < 4.0.4-r0 +4.0.4-r1 < 4.1.0-r0 +4.1.1-r2 < 4.1.1-r3 +4.1.1-r3 < 4.1.1-r4 +4.1.1-r4 < 4.1.5-r0 +4.1.5-r1 < 4.1.5-r2 +4.1.5-r2 < 4.2.0-r0 +4.2.0-r0 < 4.2.1-r0 +4.2.1-r0 < 4.2.2-r0 +4.2.2-r1 < 4.2.2-r2 +4.2.3-r3 < 4.2.3-r4 +4.2.3-r4 < 4.2.3-r5 +4.2.3-r5 < 4.2.4-r0 +4.2.4-r1 < 4.2.4-r2 +4.2.5-r0 < 4.2.5-r1 +4.2.5-r1 < 4.3.0-r0 +4.3.1-r0 < 4.3.3-r0 +4.3.3-r1 < 4.3.4-r0 +4.3.4-r0 < 4.3.4-r1 +4.3.4-r1 < 4.3.5-r0 +4.3.5-r0 < 4.4.0-r0 +4.4.0-r1 < 4.4.2-r1 +4.4.2-r1 < 4.4.2-r2 +4.4.2-r2 < 4.4.2-r3 +4.4.2-r3 < 4.4.4-r0 +4.4.5-r1 < 5.0.0-r0 +5.0.0-r1 < 5.0.1-r0 +5.0.4-r1 < 5.0.6-r1 +5.0.6-r1 < 5.0.7-r1 +5.0.7-r1 < 5.1.2-r0 +0.21-r0 < 0.21-r1 +0.21-r1 < 0.21-r2 +0.21-r2 < 1.2.8-r0 +1.2.8-r1 < 1.2.9-r0 +1.3.0-r0 < 1.4.4-r0 +1.4.5-r2 < 1.4.5-r3 +1.4.5-r3 < 1.4.5-r4 +1.4.5-r4 < 1.5.0-r0 +1.24.0-r0 < 1.24.1-r0 +1.24.1-r0 < 1.24.2-r0 +1.24.2-r0 < 1.24.4-r0 +1.24.4-r0 < 1.24.5-r0 +1.24.5-r0 < 1.26.0-r0 +1.26.1-r0 < 1.26.2-r0 +1.26.2-r1 < 1.28.0-r0 +1.28.0-r0 < 1.28.0-r1 +1.28.0-r1 < 1.28.1-r0 +1.28.1-r1 < 1.28.1-r2 +1.28.1-r2 < 1.28.3-r0 +1.28.3-r1 < 1.28.4-r0 +1.28.4-r2 < 1.28.4-r3 +1.28.4-r3 < 1.28.4-r4 +1.28.4-r4 < 1.28.4-r5 +1.28.4-r5 < 1.29.4-r0 +1.29.4-r0 < 1.29.4-r1 +1.29.4-r1 < 1.30.0-r0 +1.30.0-r0 < 1.30.1-r0 +1.30.1-r0 < 1.32.1-r0 +1.32.1-r2 < 1.32.2-r0 +1.32.2-r0 < 1.32.4-r0 +1.32.4-r0 < 1.32.5-r0 +1.32.5-r0 < 1.34.0-r0 +1.34.0-r0 < 1.34.1-r0 +1.34.1-r0 < 1.35.2-r0 +1.35.2-r0 < 1.36.0-r0 +1.36.0-r0 < 1.36.1-r0 +1.36.1-r0 < 1.36.2-r0 +1.36.2-r0 < 1.36.3-r0 +1.36.3-r0 < 1.36.5-r0 +1.36.5-r0 < 1.36.6-r0 +1.36.6-r0 < 1.36.8-r0 +1.36.8-r0 < 1.36.8-r1 +1.36.8-r1 < 1.36.8-r2 +1.36.8-r2 < 1.38.1-r0 +1.38.1-r0 < 1.39.0-r0 +1.39.0-r0 < 1.40.1-r0 +1.40.1-r0 < 1.40.1-r1 +1.40.1-r1 < 1.40.2-r0 +1.40.2-r0 < 1.40.2-r1 +1.40.2-r1 < 1.40.3-r0 +1.40.3-r0 < 1.40.3-r1 +1.40.3-r1 < 1.40.5-r0 +1.40.5-r0 < 1.40.5-r1 +1.40.5-r1 < 1.40.6-r0 +1.40.6-r0 < 1.40.6-r1 +1.40.6-r1 < 1.40.11-r0 +1.40.11-r0 < 1.40.11-r1 +1.40.11-r1 < 1.40.12-r0 +1.40.12-r0 < 1.40.12-r1 +1.40.12-r1 < 1.40.13-r0 +1.40.13-r0 < 1.40.13-r1 +1.40.13-r1 < 1.40.14-r0 +1.40.14-r0 < 1.40.14-r1 +1.40.14-r1 < 1.42.1-r0 +1.42.1-r0 < 1.42.1-r1 +1.42.1-r1 < 1.42.4-r0 +1.42.4-r0 < 1.42.4-r1 +0.8.2.1-r1 < 0.8.3-r0 +0.8.3-r0 < 0.8.3.1-r0 +0.8.3.1-r0 < 0.8.3.1-r1 +0.8.3.1-r1 < 0.8.3.1-r2 +0.8.3.1-r2 < 0.8.3.3-r0 +0.8.3.3-r0 < 0.8.3.4-r0 +0.8.3.4-r0 < 0.9-r0 +0.9-r0 < 0.9.0.1-r0 +0.9.0.1-r0 < 0.9.0.2-r0 +0.9.0.2-r0 < 0.9.0.2-r1 +0.9.0.2-r1 < 0.9.0.3-r0 +0.9.0.3-r0 < 0.9.1-r0 +0.9.2-r1 < 0.10-r0 +0.10-r0 < 0.10.1-r0 +0.10.1-r0 < 0.10.2-r0 +0.10.2-r1 < 0.11.2-r0 +0.11.2-r0 < 0.11.2-r1 +0.11.2-r1 < 0.12-r0 +0.12-r0 < 0.12-r1 +0.12-r1 < 1.0-r0 +1.0-r1 < 1.1-r1 +1.0.0-r3 < 1.1.1-r0 +1.1.1-r3 < 1.2.1-r0 +1.2.1-r0 < 1.3.0-r0 +1.4.0-r0 < 1.5.1-r0 +1.5.1-r0 < 1.5.3-r0 +1.5.3-r0 < 1.6.1-r0 +1.6.2-r0 < 1.7.4-r0 +1.7.4-r1 < 1.8.1-r0 +1.0.13-r0 < 1.0.13-r1 +1.0.13-r1 < 1.0.16-r0 +1.0.16-r0 < 1.0.17-r0 +1.0.17-r0 < 1.0.18-r0 +1.0.18-r0 < 1.0.19-r0 +1.0.21-r0 < 1.0.22-r0 +1.0.23-r1 < 1.0.23-r2 +1.0.23-r2 < 1.0.24-r0 +1.0.24-r1 < 1.0.24-r2 +1.0.24-r2 < 1.0.25-r0 +1.0.25-r1 < 1.0.26-r0 +1.0.26-r0 < 1.0.28-r0 +1.0.28-r1 < 1.0.29-r0 +1.0.29-r0 < 1.0.30-r0 +1.0.30-r0 < 1.0.31-r0 +1.0.31-r0 < 1.0.31-r1 +1.0.31-r1 < 1.0.32-r1 +1.0.32-r1 < 1.0.32-r2 +1.0.32-r2 < 1.0.33-r0 +1.0.33-r0 < 1.0.33-r1 +1.0.33-r1 < 1.0.34-r0 +1.0.34-r0 < 1.0.34-r1 +4.4.4-r0 < 4.4.4-r1 +4.4.4-r1 < 4.4.4-r2 +4.4.4-r2 < 6.0.5-r0 +6.0.5-r1 < 6.0.5-r2 +6.0.5-r2 < 6.0.6-r0 +6.0.6-r0 < 6.0.6-r1 +6.0.6-r1 < 6.0.6-r2 +6.0.6-r2 < 6.0.6-r3 +6.0.6-r3 < 6.0.6-r4 +0.17-r0 < 0.17-r1 +0.17-r1 < 0.17-r2 +0.17-r2 < 0.17-r3 +0.17-r3 < 0.17-r4 +0.17-r4 < 0.18.1.1-r0 +0.18.1.1-r0 < 0.18.1.1-r1 +0.18.1.1-r1 < 0.18.1.1-r2 +0.18.1.1-r2 < 0.18.1.1-r3 +0.18.1.1-r3 < 0.18.1.1-r4 +0.18.1.1-r4 < 0.18.1.1-r5 +0.18.1.1-r5 < 0.18.1.1-r6 +0.18.1.1-r6 < 0.18.1.1-r7 +0.18.1.1-r7 < 0.18.2-r0 +0.18.2-r0 < 0.18.2.1-r0 +0.18.2.1-r0 < 0.18.3-r0 +0.18.3-r0 < 0.18.3.1-r0 +0.18.3.1-r0 < 0.18.3.1-r1 +0.18.3.1-r1 < 0.18.3.2-r0 +0.18.3.2-r0 < 0.19.1-r0 +0.19.1-r0 < 0.19.3-r0 +0.19.3-r0 < 0.19.4-r0 +0.19.4-r0 < 0.19.4-r1 +0.19.4-r1 < 0.19.4-r2 +0.19.4-r2 < 0.19.5-r0 +0.19.5-r0 < 0.19.6-r0 +0.19.6-r0 < 0.19.6-r1 +0.19.6-r1 < 0.19.6-r2 +0.19.6-r2 < 0.19.6-r3 +0.19.6-r3 < 0.19.7-r0 +0.19.7-r0 < 0.19.7-r1 +0.19.7-r1 < 0.19.7-r2 +0.19.7-r2 < 0.19.7-r3 +0.19.7-r3 < 0.19.8-r0 +0.19.8-r0 < 0.19.8.1-r0 +0.19.8.1-r0 < 0.19.8.1-r1 +0.19.8.1-r1 < 0.19.8.1-r2 +0.19.8.1-r2 < 0.19.8.1-r3 +0.19.8.1-r3 < 0.19.8.1-r4 +1.6.0.9-r0 < 1.6.0.9-r1 +1.6.0.9-r1 < 1.6.0.9-r2 +1.6.0.9-r2 < 1.6.0.9-r3 +1.6.0.9-r3 < 1.6.0.9-r4 +1.6.0.9-r4 < 1.6.0.10-r0 +1.6.0.10-r0 < 1.6.0.10-r1 +1.6.0.10-r1 < 1.6.0.10-r2 +1.6.0.10-r2 < 1.6.0.13-r0 +1.6.0.13-r0 < 1.6.0.14-r0 +1.6.0.14-r0 < 1.6.0.14-r1 +1.6.0.14-r1 < 1.6.0.15-r0 +1.6.0.15-r0 < 1.6.0.15-r1 +1.6.0.15-r1 < 1.6.0.15-r2 +1.6.0.15-r2 < 1.6.0.18-r1 +1.6.0.18-r1 < 1.6.0.19-r0 +1.6.0.19-r0 < 1.6.0.19-r1 +1.6.0.19-r1 < 1.6.0.20-r0 +1.6.0.20-r0 < 1.6.0.20-r1 +1.6.0.20-r1 < 1.6.2.1-r0 +1.6.2.1-r0 < 1.6.2.1-r1 +1.6.2.1-r1 < 1.6.2.6-r0 +1.6.2.6-r0 < 1.6.2.6-r1 +1.6.2.6-r1 < 1.6.2.6-r2 +1.6.2.6-r2 < 1.6.2.7-r0 +1.6.2.7-r0 < 1.6.2.7-r1 +1.6.2.7-r1 < 1.6.2.8-r0 +1.6.2.8-r0 < 1.6.2.9-r0 +1.6.2.9-r0 < 1.6.2.10-r0 +1.6.2.10-r0 < 1.6.2.11-r0 +1.6.2.11-r0 < 1.6.2.13-r0 +1.6.2.13-r0 < 1.6.2.13-r1 +1.6.2.13-r1 < 1.8.0-r0 +1.8.1.1-r0 < 1.8.2.1-r0 +1.8.2.2-r0 < 1.8.2.4-r0 +1.8.2.4-r0 < 1.8.3-r0 +1.8.3-r0 < 1.8.3.2-r0 +1.8.3.2-r0 < 1.8.3.2-r1 +1.8.3.2-r1 < 1.8.3.3-r0 +1.8.3.3-r0 < 1.8.4-r0 +1.8.4.2-r0 < 1.8.4.4-r0 +1.8.4.4-r0 < 1.8.5.0-r0 +1.8.5.0-r0 < 1.8.6.0-r0 +1.8.6.0-r0 < 1.8.7.0-r0 +1.8.7.0-r0 < 1.8.7.1-r0 +1.8.7.1-r0 < 1.8.8.0_rc3-r0 +1.8.8.0_rc3-r0 < 1.8.8.0_rc4-r0 +1.8.8.0_rc4-r0 < 1.8.8.0_rc5-r0 +1.8.8.0_rc5-r0 < 10.0.0-r0 +10.0.0-r2 < 10.0.0-r3 +10.0.0-r3 < 10.0.0-r4 +10.0.0-r4 < 10.0.0-r5 +10.0.0-r5 < 10.0.1-r0 +10.0.1-r0 < 10.0.1-r1 +10.0.1-r1 < 10.1.0-r0 +10.1.0-r0 < 10.1.0-r1 +10.1.0-r1 < 10.1.0-r2 +10.1.0-r2 < 10.1.1-r0 +10.1.1-r0 < 10.1.2-r0 +10.1.2-r0 < 10.1.2-r1 +10.1.2-r1 < 10.1.2-r2 +10.1.2-r2 < 10.1.3-r0 +10.1.3-r0 < 10.2.0-r0 +10.2.0-r0 < 10.2.1-r0 +10.2.1-r0 < 10.3.0-r0 +10.3.0-r0 < 10.3.1-r0 +10.3.1-r0 < 10.4.0-r0 +10.4.0-r0 < 10.4.1-r0 +10.4.1-r0 < 10.4.1-r1 +10.4.1-r1 < 10.4.2-r0 +10.4.2-r0 < 10.4.2-r1 +10.4.2-r1 < 10.5.0-r0 +10.5.0-r0 < 10.5.1-r0 +10.5.1-r0 < 10.5.2-r0 +10.5.2-r0 < 10.6.0-r0 +10.6.0-r0 < 10.6.1-r0 +10.6.1-r0 < 10.7.0-r0 +10.7.0-r0 < 10.7.1-r0 +10.7.1-r0 < 10.7.1-r1 +10.7.1-r1 < 10.7.1-r3 +10.7.1-r3 < 10.8.0-r0 +10.8.0-r0 < 10.8.0-r1 +10.8.0-r1 < 10.9.0-r0 +10.9.0-r0 < 11.0.0-r2 +11.0.0-r2 < 11.0.1-r0 +11.0.1-r0 < 11.0.2-r0 +11.0.2-r0 < 11.1.0-r0 +11.1.0-r0 < 11.1.2-r0 +11.1.2-r0 < 11.2.0-r0 +11.2.0-r0 < 11.2.1-r0 +11.2.1-r0 < 11.2.2-r0 +11.2.2-r0 < 11.3.0-r0 +11.3.0-r0 < 11.4.0-r0 +11.4.0-r0 < 11.4.0-r1 +11.4.0-r1 < 11.4.0-r2 +11.4.0-r2 < 11.5.0-r0 +11.5.0-r0 < 11.5.0-r1 +11.5.0-r1 < 11.5.0-r2 +11.5.0-r2 < 11.5.1-r0 +11.5.1-r0 < 11.5.1-r1 +11.5.1-r1 < 11.5.1-r2 +11.5.1-r2 < 11.5.1-r3 +11.5.1-r3 < 11.6.0-r0 +11.6.0-r0 < 11.6.1-r0 +11.6.1-r0 < 11.7.0-r0 +11.7.0-r0 < 11.7.0-r1 +11.7.0-r1 < 12.1.0-r0 +12.1.0-r0 < 12.1.1-r0 +12.1.1-r0 < 12.2.0-r0 +12.2.0-r0 < 12.2.0-r1 +12.2.0-r1 < 12.3.0-r0 +12.3.0-r0 < 12.3.1-r0 +12.3.1-r0 < 12.3.2-r0 +12.3.2-r0 < 12.4.0-r0 +12.4.0-r0 < 12.4.0-r1 +12.4.0-r1 < 12.4.0-r2 +12.4.0-r2 < 12.4.0-r3 +12.4.0-r3 < 12.4.0-r4 +12.4.0-r4 < 12.4.0-r5 +12.4.0-r5 < 12.4.0-r6 +12.4.0-r6 < 12.4.0-r7 +12.4.0-r7 < 12.5.0-r0 +12.5.0-r0 < 12.5.1-r0 +12.5.1-r0 < 12.6.0-r0 +12.6.0-r0 < 13.0.0-r0 +13.0.0-r0 < 13.0.1-r0 +13.0.1-r0 < 13.0.2-r0 +13.0.2-r0 < 13.1.0-r0 +13.1.0-r0 < 13.1.0-r1 +13.1.0-r1 < 13.1.1-r0 +13.1.1-r0 < 13.2.0-r0 +13.2.0-r0 < 13.3.1-r0 +13.3.1-r0 < 13.3.2-r0 +13.3.2-r0 < 13.3.2-r1 +13.3.2-r1 < 13.4.0-r0 +13.4.0-r0 < 13.5.0-r0 +13.5.0-r0 < 13.6.0-r0 +13.6.0-r0 < 13.6.0-r1 +13.6.0-r1 < 13.7.0-r0 +13.7.0-r0 < 13.7.2-r0 +13.7.2-r0 < 13.7.2-r1 +13.7.2-r1 < 13.9.1-r0 +13.9.1-r0 < 13.11.1-r0 +13.11.1-r0 < 14.0.2-r0 +14.0.2-r0 < 14.1.0-r0 +14.1.0-r0 < 14.1.1-r0 +14.1.1-r0 < 14.1.2-r0 +14.1.2-r0 < 14.1.2-r1 +14.1.2-r1 < 14.2.0-r0 +14.2.0-r0 < 14.2.1-r0 +14.2.1-r0 < 14.2.1-r1 +14.2.1-r1 < 14.2.1-r2 +14.2.1-r2 < 14.3.0-r0 +14.3.0-r0 < 14.3.1-r0 +14.3.1-r0 < 14.4.0-r0 +14.4.0-r0 < 14.4.0-r1 +14.4.0-r1 < 14.4.0-r2 +14.4.0-r2 < 14.4.1-r0 +14.4.1-r0 < 14.5.0-r0 +14.5.0-r0 < 14.6.0-r0 +14.6.0-r0 < 14.6.0-r1 +14.6.0-r1 < 14.6.1-r0 +14.6.1-r0 < 14.6.2-r0 +14.6.2-r0 < 15.1.0-r0 +15.1.0-r0 < 15.1.1-r0 +15.1.1-r0 < 15.1.1-r1 +15.1.1-r1 < 15.1.2-r0 +15.1.2-r0 < 15.1.3-r0 +15.1.3-r0 < 15.1.4-r0 +15.1.4-r0 < 15.1.5-r0 +15.1.5-r0 < 15.1.5-r1 +15.1.5-r1 < 15.2.0-r0 +15.2.0-r0 < 15.2.0-r1 +15.2.0-r1 < 15.2.2-r0 +15.2.2-r0 < 15.2.2-r1 +15.2.2-r1 < 15.3.0-r0 +15.3.0-r0 < 15.3.0-r1 +15.3.0-r1 < 15.3.0-r2 +15.3.0-r2 < 15.5.0-r0 +15.5.0-r0 < 15.5.0-r1 +15.5.0-r1 < 15.5.0-r2 +15.5.0-r2 < 15.6.0-r0 +15.6.0-r0 < 15.6.1-r0 +15.6.1-r0 < 15.6.1-r1 +15.6.1-r1 < 15.6.1-r2 +15.6.1-r2 < 15.7.1-r0 +15.7.1-r0 < 15.7.1-r1 +15.7.1-r1 < 16.3.0-r0 +16.3.0-r0 < 16.3.0-r1 +16.3.0-r1 < 16.4.1-r0 +16.4.1-r0 < 16.4.1-r1 +16.4.1-r1 < 16.5.1-r0 +16.5.1-r0 < 16.5.1-r1 +16.5.1-r1 < 16.6.2-r0 +16.6.2-r0 < 16.6.2-r1 +16.6.2-r1 < 16.7.0-r0 +16.7.0-r0 < 16.7.0-r1 +16.7.0-r1 < 16.11.0-r0 +16.11.0-r0 < 16.12.0-r0 +16.12.0-r0 < 16.12.0-r1 +16.12.0-r1 < 16.14.1-r1 +16.14.1-r1 < 17.7.0-r0 +17.7.0-r0 < 18.0.0-r0 +18.0.0-r0 < 18.0.0-r1 +18.0.0-r1 < 18.0.0-r2 +18.0.0-r2 < 18.1.0-r0 +18.1.0-r0 < 18.1.0-r2 +18.1.0-r2 < 18.1.1-r0 +18.1.1-r0 < 18.1.1-r2 +18.1.1-r2 < 18.2.1-r0 +18.2.1-r0 < 18.2.1-r1 +18.2.1-r1 < 18.2.2-r0 +18.2.2-r0 < 18.2.2-r1 +18.2.2-r1 < 18.2.2-r2 +18.2.2-r2 < 18.2.2-r3 +18.2.2-r3 < 18.2.2-r4 +18.2.2-r4 < 18.2.2-r5 +18.2.2-r5 < 18.11.2-r0 +18.11.2-r0 < 18.11.2-r5 +18.11.2-r5 < 18.13.0-r0 +18.13.0-r0 < 18.13.0-r1 +18.13.0-r1 < 18.13.0-r5 +18.13.0-r5 < 18.15.0-r0 +18.15.0-r1 < 18.15.0-r2 +18.15.0-r2 < 18.15.0-r3 +18.15.0-r3 < 18.15.1-r0 +18.15.1-r0 < 18.15.1-r1 +18.15.1-r1 < 18.15.1-r2 +18.15.1-r2 < 18.15.1-r3 +18.15.1-r3 < 20.4.0-r0 +20.4.0-r0 < 20.5.0-r0 +20.5.0-r0 < 20.5.0-r1 +2.3.2-r3 < 2.3.2-r4 +2.3.2-r4 < 2.3.2-r5 +2.3.2-r5 < 2.3.3-r5 +2.3.3-r5 < 2.3.3-r6 +2.3.3-r6 < 2.3.3-r7 +2.3.3-r7 < 2.4.0-r0 +2.4.3-r2 < 2.4.3-r3 +2.4.3-r3 < 2.4.3-r4 +2.4.3-r4 < 2.4.3-r5 +2.4.3-r5 < 2.4.3-r6 +0.01-r0 < 0.05-r0 +0.05-r0 < 0.05-r1 +0.05-r1 < 0.05-r2 +2.7-r3 < 2.7-r4 +2.7-r4 < 2.7-r5 +2.7-r5 < 2.7-r6 +2.7-r6 < 2.7-r7 +2.7-r7 < 2.7-r8 +2.7-r8 < 2.8.8-r8 +1.2-r1 < 1.3-r0 +1.3-r1 < 1.4-r0 +1.4-r1 < 1.6-r0 +1.6-r2 < 1.7-r2 +1.8.10-r2 < 1.10.0-r0 +1.10.2-r1 < 1.10.2-r2 +1.10.2-r2 < 1.10.2-r3 +1.10.2-r3 < 1.10.2-r4 +1.10.2-r4 < 1.10.2-r5 +1.10.2-r5 < 1.10.2-r6 +1.10.2-r6 < 1.10.2-r7 +1.10.2-r7 < 1.10.2-r8 +1.10.2-r8 < 1.10.2-r9 +1.10.2-r9 < 1.10.2-r10 +1.10.2-r10 < 1.12.0-r0 +1.12.2-r0 < 1.12.6-r0 +1.12.6-r0 < 1.12.8-r0 +1.12.8-r0 < 1.12.10-r0 +1.12.10-r0 < 1.12.12-r0 +1.12.12-r0 < 1.12.14-r0 +1.12.14-r0 < 1.12.14-r1 +1.12.14-r1 < 1.12.16-r0 +1.12.16-r0 < 1.12.16-r1 +1.12.16-r1 < 1.12.16-r2 +1.12.16-r2 < 1.14.0-r0 +1.14.0-r0 < 1.14.2-r0 +1.14.2-r1 < 1.14.4-r0 +1.14.4-r0 < 1.14.4-r1 +1.14.4-r1 < 1.14.8-r0 +1.14.8-r0 < 1.14.8-r1 +1.14.8-r1 < 1.14.10-r0 +1.14.10-r0 < 1.14.12-r0 +1.14.12-r0 < 1.14.12-r1 +1.14.12-r1 < 1.14.12-r2 +1.14.12-r2 < 1.15.12-r0 +1.15.12-r0 < 1.15.12-r2 +1.15.12-r2 < 1.16.0-r0 +1.16.0-r3 < 1.17.4-r0 +0.96-r0 < 0.96-r2 +0.96-r2 < 0.98-r0 +0.98-r0 < 0.99-r0 +0.99-r0 < 0.100-r0 +0.100-r0 < 0.101-r0 +0.101-r0 < 0.101-r1 +0.101-r1 < 0.101-r2 +0.101-r2 < 0.102-r0 +0.102-r0 < 0.103-r0 +0.103-r0 < 0.103-r1 +0.103-r1 < 0.105-r1 +1.28-r1 < 1.28-r2 +1.28-r2 < 1.28-r3 +1.28-r3 < 1.28-r4 +1.28-r4 < 1.28-r5 +1.28-r5 < 1.28-r6 +1.28-r6 < 1.28-r7 +1.28-r7 < 1.28-r8 +1.28-r8 < 1.28-r9 +1.28-r9 < 1.28-r10 +1.28-r10 < 1.28-r11 +1.28-r11 < 1.28-r12 +1.28-r12 < 1.29.9.2-r12 +1.6.0-r4 < 1.7.0-r0 +1.7.1-r0 < 1.8.0-r0 +1.8.3-r3 < 1.8.3-r4 +1.8.3-r4 < 1.8.3-r5 +2.1-r0 < 3.03-r0 +3.03-r0 < 3.04-r0 +3.04-r0 < 3.5.1-r0 +3.5.1-r1 < 3.5.3-r0 +3.5.3-r0 < 3.5.3-r1 +3.5.3-r1 < 3.6.2-r0 +3.6.2-r1 < 3.6.3-r0 +3.6.3-r0 < 3.6.3-r1 +3.6.3-r1 < 3.6.4-r0 +3.6.5-r0 < 3.6.5-r1 +3.6.5-r1 < 3.6.5-r2 +3.6.5-r2 < 3.6.5-r3 +3.6.5-r3 < 3.6.6-r0 +3.6.6-r0 < 3.6.6-r3 +3.6.6-r3 < 3.6.7-r0 +3.6.7-r1 < 3.6.7-r3 +3.6.7-r3 < 3.6.8-r1 +3.6.8-r1 < 3.6.10-r1 +0.3.0-r0 < 0.4.2-r0 +0.4.2-r0 < 0.4.3-r0 +0.4.3-r0 < 0.4.3-r3 +0.4.3-r3 < 0.4.3-r4 +0.4.3-r4 < 0.5.0-r0 +0.5.0-r0 < 0.5.0-r1 +0.5.0-r1 < 0.5.0-r2 +0.5.0-r2 < 0.5.0-r3 +0.5.0-r3 < 0.5.0-r4 +0.5.0-r4 < 0.5.0-r5 +0.5.0-r5 < 0.5.0-r6 +0.5.0-r6 < 0.5.0-r7 +0.5.0-r7 < 0.5.0-r8 +0.5.0-r8 < 0.5.0-r9 +0.5.0-r9 < 0.5.0-r10 +0.5.0-r10 < 0.5.0-r11 +0.5.0-r11 < 0.5.0-r12 +0.5.0-r12 < 0.5.0-r13 +0.5.0-r13 < 0.6.0-r0 +0.6.0-r1 < 0.6.1-r0 +0.6.1-r1 < 0.6.1-r2 +0.6.1-r2 < 0.6.1-r3 +0.6.1-r3 < 0.6.1-r4 +0.6.1-r4 < 0.6.1-r5 +0.6.1-r5 < 0.7.0-r0 +0.7.0-r1 < 0.8.0-r1 +0.8.0-r1 < 0.8.2-r1 +0.8.2-r1 < 0.8.3-r1 +0.8.3-r1 < 0.9.7-r1 +0.9.7-r1 < 0.9.8.4-r1 +0.9.8.4-r1 < 0.10.5-r1 +0.10.5-r1 < 0.11.8-r1 +0.11.8-r1 < 0.12.4-r1 +0.12.4-r1 < 0.14-r1 +0.14-r1 < 0.15-r1 +0.15-r1 < 0.15.1-r1 +0.15.1-r1 < 0.16.4-r1 +0.16.4-r1 < 0.17-r1 +0.17-r1 < 0.18.3-r1 +0.18.3-r1 < 0.19-r1 +0.19-r1 < 0.20.4-r1 +0.20.4-r1 < 0.20.5-r1 +0.20.5-r1 < 0.21-r1 +0.21-r1 < 0.21.2-r1 +0.21.2-r1 < 0.21.3-r1 +0.21.3-r1 < 0.21.7-r1 +0.21.7-r1 < 0.23.2-r1 +0.23.2-r1 < 0.24.1-r1 +0.24.1-r1 < 0.35.5-r1 +0.35.5-r1 < 0.38.3-r1 +0.38.3-r1 < 0.39.2-r1 +0.39.2-r1 < 0.41.2-r1 +0.41.2-r1 < 0.42.1-r1 +0.42.1-r1 < 0.43-r1 +0.43-r1 < 0.43.1-r1 +0.43.1-r1 < 0.43.2-r1 +0.43.2-r1 < 0.43.3-r1 +0.43.3-r1 < 0.43.4-r1 +0.43.4-r1 < 0.43.5-r1 +0.43.5-r1 < 0.44-r1 +0.44-r1 < 0.44.3-r1 +0.44.3-r1 < 0.44.4-r1 +0.44.4-r1 < 0.44.5-r1 +4.1.0-r0 < 4.1.0_p1-r0 +4.1.0_p1-r0 < 4.1.0_p1-r1 +4.1.0_p1-r1 < 4.1.0_p1-r2 +4.1.0_p1-r2 < 4.1.0_p1-r3 +4.1.0_p1-r3 < 4.1.0_p1-r4 +4.1.0_p1-r4 < 4.1.0_p1-r5 +4.1.0_p1-r5 < 4.1.0_p1-r6 +4.1.0_p1-r6 < 4.1.0_p1-r7 +4.1.0_p1-r7 < 4.1.0_p1-r8 +4.1.0_p1-r8 < 4.1.0_p1-r9 +4.1.0_p1-r9 < 4.1.0_p1-r10 +4.1.0_p1-r10 < 4.1.1_p1-r0 +4.1.1_p1-r0 < 4.1.1_p1-r1 +4.1.1_p1-r1 < 4.2.0-r1 +4.2.0-r1 < 4.2.0_p1-r1 +4.2.0_p1-r1 < 4.2.0_p2-r1 +4.2.0_p2-r1 < 4.2.1-r1 +4.2.1-r1 < 4.2.1_p1-r1 +4.2.1_p1-r1 < 4.2.2-r1 +4.2.2-r1 < 4.2.3-r1 +4.2.3-r1 < 4.2.3_p1-r1 +4.2.3_p1-r1 < 4.2.3_p2-r1 +4.2.3_p2-r1 < 4.2.4-r1 +4.2.4-r1 < 4.2.4_p1-r1 +4.2.4_p1-r1 < 4.2.4_p2-r1 +4.2.4_p2-r1 < 4.2.5-r1 +4.2.5-r1 < 4.2.5_p1-r1 +4.2.5_p1-r1 < 4.3.0-r1 +4.3.0-r1 < 4.3.1-r1 +4.3.1-r1 < 4.3.2-r1 +4.3.2-r1 < 4.3.3-r1 +4.3.3-r1 < 4.3.3_p1-r1 +4.3.3_p1-r1 < 4.3.4-r1 +4.3.4-r1 < 4.3.5-r1 +4.3.5-r1 < 4.4.1-r1 +4.4.2-r1 < 4.4.2_p1-r1 +4.4.2_p1-r1 < 4.4.3-r1 +0.7.4_rc1-r0 < 0.7.4-r0 +0.7.4-r0 < 0.7.4-r1 +0.7.4-r1 < 0.7.4-r2 +0.7.4-r2 < 0.7.4-r3 +0.7.4-r3 < 0.8.0_rc1-r0 +0.8.0_rc1-r0 < 0.8.0_rc2-r0 +0.8.0_rc2-r0 < 0.8.0-r0 +0.8.0-r1 < 0.8.0-r2 +0.8.0-r2 < 0.8.0-r3 +0.8.0-r3 < 0.8.0-r4 +0.8.0-r4 < 0.8.0-r5 +0.8.0-r5 < 0.8.0-r6 +0.8.0-r6 < 0.8.0-r7 +0.8.0-r7 < 0.9.0-r0 +0.9.0-r0 < 0.9.0-r1 +0.9.0-r1 < 0.9.0-r2 +0.9.0-r2 < 0.9.0-r3 +0.9.0-r3 < 0.9.0-r4 +0.9.0-r4 < 0.9.0-r5 +0.9.0-r5 < 0.9.0-r6 +0.9.0-r6 < 0.9.0-r7 +0.9.0-r7 < 0.9.0-r8 +0.9.0-r8 < 0.9.0-r9 +0.9.0-r9 < 0.9.0-r10 +0.9.0-r10 < 0.9.0-r11 +0.9.0-r11 < 1.0.0_rc4-r11 +1.0.0_rc4-r11 < 1.0.0-r11 +1.0.0-r11 < 1.0.1-r11 +1.0.1-r11 < 1.0.2-r11 +1.0.2-r11 < 1.0.3-r11 +1.0.3-r11 < 1.0.4-r11 +1.0.4-r11 < 1.0.5-r11 +1.0.5-r11 < 1.0.6-r11 +1.0.6-r11 < 1.0.7-r11 +1.0.7-r11 < 1.1.0-r11 +1.1.0-r11 < 1.1.1-r11 +1.1.1-r11 < 1.1.2-r11 +1.1.2-r11 < 1.1.3-r11 +1.1.3-r11 < 1.1.5-r11 +1.1.5-r11 < 2.0.1-r11 +2.0.1-r11 < 2.0.3-r11 +2.0.3-r11 < 2.0.4-r11 +2.0.4-r11 < 2.0.5-r11 +2.0.5-r11 < 2.0.6-r11 +2.0.6-r11 < 2.0.7-r11 +2.0.7-r11 < 2.0.8-r11 +2.0.8-r11 < 2.1.0-r11 +2.1.0-r11 < 2.1.1-r11 +2.1.1-r11 < 3.1.0-r11 +3.1.0-r11 < 3.2.1-r11 +3.2.1-r11 < 4.0.0-r11 +4.0.0-r11 < 4.0.1-r11 +4.0.1-r11 < 4.0.2-r11 +4.0.2-r11 < 4.0.3-r11 +4.0.3-r11 < 4.0.4-r11 +4.0.4-r11 < 4.0.5-r11 +4.0.5-r11 < 4.0.6-r11 +4.0.6-r11 < 4.0.8-r11 +4.0.8-r11 < 4.0.9-r11 +4.0.9-r11 < 4.0.10-r11 +4.0.10-r11 < 4.0.11-r11 +4.0.11-r11 < 4.0.12-r11 +1.3-r0 < 1.4.2-r0 +1.4.3-r1 < 1.4.8-r0 +1.4.8-r2 < 1.4.8-r3 +1.4.8-r3 < 1.9.15-r0 +1.9.15-r0 < 1.9.20-r0 +1.9.20-r0 < 1.9.20-r1 +1.9.20-r1 < 1.9.20-r2 +1.9.20-r2 < 1.9.20-r3 +1.9.20-r3 < 1.9.20-r4 +1.9.20-r4 < 2.0-r0 +2.0-r0 < 2.0.1-r0 +2.0.1-r1 < 2.0.3-r0 +2.0.4-r1 < 2.0.5.1-r0 +2.0.5.1-r0 < 2.0.6-r0 +2.0.9-r2 < 2.0.10-r0 +2.0.10-r1 < 2.0.11.1-r0 +2.0.11.1-r0 < 2.0.11.2-r0 +2.0.11.2-r0 < 2.0.11.2-r1 +2.0.11.2-r1 < 2.0.12-r0 +2.0.13-r1 < 2.0.13.1-r0 +2.0.13.1-r0 < 2.0.13.1-r1 +2.0.13.1-r1 < 2.0.13.1-r2 +2.0.13.1-r2 < 2.0.13.1-r3 +2.0.13.1-r3 < 2.0.13.1-r4 +2.0.13.1-r4 < 2.0.13.1-r5 +2.0.13.1-r5 < 2.0.14-r0 +2.0.14-r2 < 2.0.14-r3 +2.0.14-r3 < 2.0.14-r4 +2.0.14-r4 < 2.0.14-r5 +2.0.14-r5 < 2.0.14-r6 +2.0.14-r6 < 2.0.14-r7 +2.0.14-r7 < 2.0.14-r8 +2.0.14-r8 < 2.0.14-r9 +2.0.14-r9 < 2.0.15-r0 +2.0.15-r3 < 2.0.15-r4 +2.0.15-r4 < 2.0.16-r1 +1.04-r0 < 1.05-r0 +1.05-r0 < 1.06-r0 +1.06-r0 < 1.10-r0 +1.11-r0 < 1.12-r0 +1.12-r0 < 1.13-r0 +1.16-r0 < 1.20130710-r0 +1.20130710-r0 < 1.20130826-r0 +1.20130826-r0 < 1.20140227-r0 +1.20140227-r0 < 1.20140613-r0 +1.20140613-r0 < 1.20141024-r0 +1.20141024-r0 < 1.20150503-r0 +1.20150503-r0 < 1.20150503-r1 +1.20150503-r1 < 1.20160123-r1 +1.20160123-r1 < 1.20170129-r0 +1.20170129-r0 < 1.20170129-r1 +1.20170129-r1 < 1.20171231-r1 +1.6.4-r1 < 1.6.4-r2 +1.6.4-r2 < 1.6.4-r3 +1.6.4-r3 < 1.6.5-r1 +1.6.9-r3 < 1.6.9-r4 +1.6.9-r4 < 1.6.13-r0 +1.6.13-r0 < 1.6.13-r1 +1.6.13-r1 < 1.6.14-r0 +1.6.14-r0 < 1.6.14-r1 +1.6.14-r1 < 1.6.15-r0 +1.6.16-r0 < 1.6.16-r1 +1.6.16-r1 < 1.6.17-r0 +2.1.7-r0 < 2.1.7-r1 +2.1.7-r1 < 2.1.7-r2 +2.1.7-r2 < 2.1.10-r0 +2.1.10-r1 < 2.1.10-r2 +2.1.10-r2 < 2.1.10-r3 +2.1.10-r3 < 2.1.10-r4 +2.1.10-r4 < 2.1.10-r5 +2.1.10-r5 < 2.1.10-r6 +2.1.10-r6 < 2.1.10-r7 +2.1.10-r7 < 2.1.10-r8 +2.1.10-r8 < 2.1.10-r9 +2.1.10-r9 < 2.1.10-r10 +2.1.10-r10 < 2.1.10-r11 +2.1.10-r11 < 2.1.10-r12 +2.1.10-r12 < 2.1.10-r13 +2.1.10-r13 < 2.1.10-r14 +2.1.10-r14 < 2.1.10-r15 +2.1.10-r15 < 2.1.10-r16 +2.1.10-r16 < 2.1.10-r17 +2.1.10-r17 < 2.1.10-r18 +2.1.10-r18 < 2.1.10-r19 +2.1.10-r19 < 2.1.10-r20 +2.1.10-r20 < 2.1.10-r21 +2.1.10-r21 < 2.1.10-r22 +2.1.10-r22 < 2.1.10-r23 +2.1.10-r23 < 2.1.12-r0 +2.1.12-r0 < 2.1.12-r1 +2.1.12-r1 < 2.1.12-r2 +2.1.12-r2 < 2.1.12-r3 +2.1.12-r3 < 2.1.12-r4 +2.1.12-r4 < 2.1.12-r5 +2.1.12-r5 < 2.2.0-r0 +2.2.0-r3 < 2.2.0-r4 +2.2.0-r4 < 2.2.0-r5 +2.2.0-r5 < 2.2.0-r6 +2.2.0-r6 < 2.2.0-r7 +2.2.0-r7 < 2.2.0-r8 +2.2.0-r8 < 2.2.0-r9 +2.2.0-r9 < 2.2.0-r10 +2.2.0-r10 < 2.2.0-r11 +2.2.0-r11 < 2.2.1-r0 +2.2.3-r2 < 2.2.3-r3 +2.2.3-r3 < 2.2.3-r4 +2.2.3-r4 < 2.2.3-r5 +2.2.3-r5 < 2.2.4-r0 +2.2.4-r3 < 2.2.5-r0 +2.2.5-r2 < 2.2.5-r3 +2.2.5-r3 < 2.2.5-r4 +2.2.5-r4 < 2.2.6-r0 +2.2.6-r1 < 3.0.8-r1 +3.0.8-r4 < 3.0.8-r5 +3.0.8-r5 < 3.0.8-r6 +3.0.8-r6 < 3.0.8-r7 +3.0.8-r7 < 3.0.9-r0 +3.0.9-r2 < 3.0.9-r3 +3.0.9-r3 < 3.0.10-r0 +3.0.10-r0 < 3.0.10-r1 +3.0.10-r1 < 3.0.10-r2 +3.0.10-r2 < 3.0.10-r3 +3.0.10-r3 < 3.0.11-r0 +3.0.11-r0 < 3.0.11-r1 +3.0.11-r1 < 3.0.11-r2 +3.0.11-r2 < 3.0.11-r3 +3.0.11-r3 < 3.0.12-r0 +3.0.12-r2 < 3.0.13-r0 +3.0.13-r1 < 3.0.13-r2 +3.0.13-r2 < 3.0.13-r3 +3.0.13-r3 < 3.0.15-r0 +3.0.15-r0 < 3.0.15-r1 +3.0.15-r1 < 3.0.15-r2 +3.0.15-r2 < 3.0.15-r3 +3.0.15-r3 < 3.0.16-r0 +3.0.16-r0 < 3.0.16-r1 +3.0.16-r1 < 3.0.16-r2 +3.0.16-r2 < 3.0.17-r0 +3.0.17-r0 < 3.0.17-r1 +3.0.17-r1 < 3.0.17-r2 +3.0.17-r2 < 3.0.17-r3 +3.0.17-r3 < 3.0.17-r4 +3.0.17-r4 < 3.0.18-r0 +3.0.18-r0 < 3.0.18-r1 +3.0.18-r1 < 3.0.19-r0 +3.0.19-r0 < 3.0.19-r1 +3.0.19-r1 < 3.0.19-r2 +3.0.19-r2 < 3.0.19-r3 +3.0.19-r3 < 3.0.19-r4 +3.0.19-r4 < 3.0.20-r0 +3.0.20-r0 < 3.0.20-r1 +3.0.20-r1 < 3.0.20-r2 +3.0.20-r2 < 3.0.20-r3 +3.0.20-r3 < 3.0.20-r4 +3.0.20-r4 < 3.0.20-r5 +3.0.20-r5 < 3.0.20-r6 +3.0.20-r6 < 3.0.20-r7 +3.0.20-r7 < 3.0.20-r8 +3.0.20-r8 < 3.0.20-r9 +3.0.20-r9 < 3.0.20-r10 +3.0.20-r10 < 3.0.21-r0 +3.0.21-r0 < 3.0.21-r1 +3.0.21-r1 < 3.0.21-r2 +3.0.21-r2 < 3.0.21-r3 +3.0.21-r3 < 3.0.21-r4 +3.0.21-r4 < 3.0.21-r5 +3.0.21-r5 < 3.0.21-r6 +3.0.21-r6 < 3.0.21-r7 +3.0.21-r7 < 3.0.21-r8 +3.0.21-r8 < 3.0.22-r0 +3.0.22-r0 < 3.0.23-r0 +3.0.23-r0 < 3.0.23-r1 +3.0.23-r1 < 3.0.23-r2 +3.0.23-r2 < 3.0.23-r3 +3.0.23-r3 < 3.0.25-r0 +3.0.25-r0 < 3.0.25-r1 +3.0.25-r1 < 3.0.25-r2 +1.3.2-r2 < 1.4.0-r0 +5.5.1-r0 < 5.6-r0 +5.6-r2 < 5.7-r0 +5.8-r0 < 5.8.1-r0 +5.8.1-r0 < 5.9-r0 +5.11-r0 < 5.12-r0 +5.12-r0 < 5.12-r1 +5.12-r1 < 5.12.2-r0 +5.12.2-r0 < 5.13-r0 +5.13-r0 < 5.14-r0 +5.14-r0 < 5.15-r0 +5.15-r0 < 5.16-r0 +5.16-r0 < 5.17-r0 +5.17-r0 < 5.17.1-r0 +5.17.1-r0 < 5.18-r0 +5.18-r0 < 5.19.0-r0 +5.19.0-r0 < 5.19.0-r1 +5.19.0-r1 < 5.20.0-r0 +5.20.0-r0 < 5.20.0-r1 +5.20.0-r1 < 5.22.0-r0 +5.22.0-r1 < 5.23.0-r0 +5.23.0-r0 < 5.23.0-r1 +5.23.0-r1 < 5.24.0-r0 +5.24.0-r1 < 5.25.1-r0 +5.25.1-r0 < 5.25.1-r1 +5.25.1-r1 < 5.25.1-r2 +1.1.1-r0 < 1.1.3-r0 +1.1.4-r0 < 1.2.0-r0 +1.3.5-r0 < 1.3.7-r0 +1.3.7-r0 < 1.3.7-r1 +1.3.7-r1 < 1.3.8-r0 +1.3.8-r0 < 1.4.0-r0 +1.4.5-r3 < 1.4.8-r0 +1.6.6-r1 < 1.6.6-r2 +1.6.6-r2 < 1.6.6-r3 +1.6.6-r3 < 1.7.2-r0 +1.7.2-r1 < 1.8.1-r0 +1.8.2-r1 < 1.9.0-r0 +1.9.0-r1 < 1.9.1-r0 +1.9.1-r1 < 1.9.1-r2 +1.9.1-r2 < 1.9.1-r4 +1.9.1-r4 < 1.9.2-r0 +1.9.2-r0 < 1.12.3-r0 +1.12.3-r0 < 1.14.0-r0 +1.14.0-r1 < 1.14.2-r0 +1.14.2-r0 < 1.16.0-r0 +1.16.0-r0 < 1.16.1-r0 +1.16.2-r0 < 1.16.3-r0 +1.16.3-r0 < 1.18.2-r0 +1.18.3-r1 < 1.20.0-r0 +1.20.1-r0 < 1.20.2-r0 +1.20.2-r0 < 1.22.1-r0 +1.22.1-r1 < 1.22.2-r0 +1.22.2-r0 < 1.22.2-r1 +1.22.2-r1 < 1.22.2-r2 +1.22.2-r2 < 1.22.3-r0 +1.22.3-r0 < 1.24.1-r0 +1.24.1-r1 < 1.24.2-r0 +1.24.2-r1 < 1.26.2-r0 +1.26.2-r1 < 1.26.3-r0 +1.26.3-r0 < 1.26.3-r1 +1.26.3-r1 < 1.28.1-r0 +1.28.2-r1 < 1.28.3-r0 +1.28.3-r1 < 1.30.0-r0 +1.30.0-r0 < 1.30.0-r1 +1.30.0-r1 < 1.30.1-r0 +1.30.1-r1 < 1.30.3-r0 +1.30.3-r0 < 1.30.3-r1 +1.30.3-r1 < 1.32.1-r0 +1.32.1-r1 < 1.33.3-r0 +1.33.3-r0 < 1.33.3-r1 +1.33.3-r1 < 1.33.92-r0 +1.33.92-r0 < 1.33.92-r1 +1.33.92-r1 < 1.34.1-r0 +2.18.3-r0 < 2.18.4-r0 +2.18.4-r0 < 2.20.0-r0 +2.20.0-r0 < 2.20.3-r0 +2.20.3-r0 < 2.20.4-r0 +2.20.4-r0 < 2.20.4-r1 +2.20.4-r1 < 2.20.4-r2 +2.20.4-r2 < 2.20.5-r0 +2.20.5-r0 < 2.22.2-r0 +2.22.2-r0 < 2.22.4-r0 +2.22.4-r0 < 2.24.0-r0 +2.24.0-r2 < 2.24.0-r3 +2.24.0-r3 < 2.24.0-r4 +2.24.0-r4 < 2.24.2-r0 +2.24.2-r1 < 2.25.17-r0 +2.25.17-r0 < 2.26.0-r0 +2.26.0-r0 < 2.26.0-r1 +2.26.0-r1 < 2.26.0-r2 +2.26.0-r2 < 2.27.92-r0 +2.27.92-r0 < 2.27.93-r0 +2.27.93-r0 < 2.28.0-r0 +2.28.0-r1 < 2.28.8-r0 +2.28.8-r0 < 2.30.0-r0 +2.30.0-r1 < 2.32.1-r0 +2.32.1-r1 < 2.32.4-r0 +2.32.4-r0 < 2.34.0-r0 +2.34.0-r2 < 2.34.2-r0 +2.34.2-r0 < 2.34.3-r0 +2.36.1-r0 < 2.36.4-r0 +2.36.4-r0 < 2.38.0-r0 +2.38.0-r0 < 2.38.1-r0 +2.38.1-r0 < 2.38.1-r1 +2.38.1-r1 < 2.38.2-r0 +2.38.2-r0 < 2.40.0-r0 +2.40.0-r1 < 2.42.0-r0 +2.42.0-r0 < 2.44.0-r0 +2.44.0-r0 < 2.44.0-r1 +2.44.0-r1 < 2.44.1-r0 +2.44.1-r0 < 2.44.1-r1 +2.44.1-r1 < 2.46.0-r0 +2.46.0-r0 < 2.46.0-r1 +2.46.0-r1 < 2.46.2-r0 +2.46.2-r0 < 2.46.2-r1 +2.46.2-r1 < 2.48.0-r0 +2.48.0-r0 < 2.48.0-r1 +2.48.0-r1 < 2.48.1-r0 +2.48.1-r0 < 2.48.1-r1 +2.48.1-r1 < 2.48.1-r2 +2.48.1-r2 < 2.48.1-r3 +2.48.1-r3 < 2.48.2-r0 +2.48.2-r0 < 2.50.0-r0 +2.50.0-r0 < 2.50.2-r0 +2.50.2-r0 < 2.50.2-r1 +2.50.2-r1 < 2.50.3-r0 +2.50.3-r0 < 2.50.3-r1 +2.50.3-r1 < 2.52.0-r0 +2.52.0-r0 < 2.52.0-r1 +2.52.0-r1 < 2.52.1-r0 +2.52.1-r0 < 2.52.1-r1 +2.52.1-r1 < 2.54.0-r0 +2.54.1-r1 < 2.54.2-r0 +2.54.2-r0 < 2.54.2-r1 +2.54.2-r1 < 2.56.0-r0 +2.56.0-r1 < 2.56.1-r0 +2.56.1-r0 < 2.56.1-r1 +2.56.1-r1 < 2.58.1-r0 +2.58.1-r0 < 2.58.1-r1 +2.58.1-r1 < 2.58.1-r2 +2.58.1-r2 < 2.58.1-r3 +2.58.1-r3 < 2.60.4-r0 +2.60.4-r0 < 2.60.4-r3 +2.60.4-r3 < 2.60.5-r0 +2.60.5-r0 < 2.60.5-r3 +2.60.5-r3 < 2.60.6-r0 +2.60.6-r0 < 2.60.6-r3 +2.60.6-r3 < 2.60.7-r0 +2.60.7-r0 < 2.60.7-r3 +2.60.7-r3 < 2.62.0-r0 +2.62.0-r0 < 2.62.0-r3 +2.62.0-r3 < 2.62.1-r0 +2.62.1-r0 < 2.62.1-r3 +2.62.1-r3 < 2.62.2-r0 +2.62.2-r0 < 2.62.2-r3 +2.62.2-r3 < 2.62.3-r0 +2.62.3-r0 < 2.62.3-r3 +2.62.3-r3 < 2.62.4-r0 +2.62.4-r0 < 2.62.4-r1 +2.62.4-r1 < 2.62.4-r3 +2.62.4-r3 < 2.62.5-r0 +2.62.5-r0 < 2.62.5-r1 +2.62.5-r1 < 2.64.0-r0 +2.64.0-r0 < 2.64.1-r0 +2.64.1-r0 < 2.64.2-r0 +2.64.2-r0 < 2.64.2-r1 +2.64.2-r1 < 2.64.2-r2 +2.64.2-r2 < 2.64.2-r3 +2.64.2-r3 < 2.64.3-r0 +2.64.3-r0 < 2.64.3-r1 +2.64.3-r1 < 2.64.4-r0 +2.64.4-r0 < 2.64.5-r0 +2.64.5-r0 < 2.66.0-r0 +2.66.0-r0 < 2.66.1-r0 +2.66.1-r0 < 2.66.2-r0 +2.66.2-r0 < 2.66.3-r0 +2.66.3-r0 < 2.66.4-r0 +2.66.4-r0 < 2.66.6-r0 +1.2.12-r0 < 1.2.14-r0 +1.2.14-r0 < 1.2.16-r0 +1.2.16-r0 < 1.2.16-r1 +1.2.16-r1 < 1.2.20-r0 +1.2.20-r0 < 1.2.24-r0 +1.2.24-r0 < 1.2.24-r1 +1.2.24-r1 < 1.2.24-r2 +1.2.24-r2 < 1.2.24-r3 +1.2.24-r3 < 1.4.0-r0 +1.4.1-r1 < 1.4.6-r0 +1.4.6-r0 < 1.4.8-r0 +1.4.8-r1 < 1.4.12-r0 +1.4.12-r0 < 1.4.14-r0 +1.4.14-r1 < 1.4.16-r0 +1.4.16-r3 < 1.4.20-r0 +1.4.20-r0 < 1.6.2-r0 +1.6.2-r0 < 1.6.4-r0 +1.6.4-r0 < 1.6.8-r0 +1.6.8-r0 < 1.6.10-r0 +1.6.12-r2 < 1.6.14-r0 +1.6.16-r0 < 1.6.18-r0 +1.6.18-r0 < 1.6.18-r1 +1.6.18-r1 < 1.8.0-r0 +1.8.14-r0 < 1.8.16-r0 +1.8.16-r1 < 1.8.18-r0 +1.8.18-r0 < 1.8.20-r0 +1.8.20-r0 < 1.8.20-r1 +1.8.20-r1 < 1.10.0-r0 +1.10.2-r0 < 1.10.4-r0 +1.10.4-r0 < 1.10.6-r0 +1.10.6-r0 < 1.10.8-r0 +1.10.8-r0 < 1.10.8-r1 +1.10.8-r1 < 1.10.10-r0 +1.10.10-r0 < 1.10.10-r1 +1.10.10-r1 < 1.10.12-r0 +1.10.12-r0 < 1.10.12-r1 +1.10.12-r1 < 1.10.14-r0 +1.10.14-r0 < 1.10.14-r1 +1.10.14-r1 < 1.10.18-r0 +1.10.18-r0 < 1.10.18-r1 +1.10.18-r1 < 1.10.24-r0 +1.10.24-r0 < 1.10.24-r1 +1.10.24-r1 < 1.10.28-r1 +1.10.28-r1 < 1.12.12-r0 +1.12.16-r2 < 1.12.16-r3 +1.12.16-r3 < 1.12.16-r4 +1.12.16-r4 < 1.12.18-r0 +1.12.18-r0 < 1.12.20-r0 +1.12.20-r0 < 1.12.20-r1 +1.12.20-r1 < 1.12.20-r2 +1.12.20-r2 < 1.12.20-r3 +1.12.20-r3 < 1.12.20-r4 +1.12.20-r4 < 1.12.22-r0 +1.12.22-r0 < 1.12.22-r1 +1.12.22-r1 < 1.14.0-r0 +0.21-r0 < 0.21.1-r0 +0.21.1-r0 < 0.21.1-r1 +0.21.1-r1 < 0.22-r0 +0.22-r0 < 0.23-r0 +0.23-r0 < 0.24-r0 +0.24-r0 < 0.24-r1 +0.24-r1 < 0.25-r1 +0.25-r1 < 0.26-r1 +0.26-r1 < 0.27.2-r1 +1.1.1-r3 < 1.1.2-r3 +2.0.10-r0 < 2.1.7-r0 +2.1.10-r0 < 2.1.11-r0 +2.1.11-r0 < 2.2.0-r0 +2.2.0-r1 < 3.2.2-r0 +3.2.4-r0 < 4.0.4-r0 +4.0.4-r0 < 4.0.5-r0 +4.0.5-r0 < 4.1.1-r0 +4.1.3-r2 < 4.1.3-r3 +4.1.3-r3 < 4.1.4-r0 +4.1.5-r1 < 4.2.2-r0 +4.2.3-r2 < 4.2.5-r0 +4.2.5-r2 < 4.3.1-r0 +4.3.1-r2 < 4.3.2-r0 +0.82-r0 < 0.82-r1 +0.82-r1 < 0.82-r2 +0.82-r2 < 0.82-r4 +0.82-r4 < 0.82-r5 +0.82-r5 < 0.82-r6 +0.82-r6 < 0.82-r7 +0.82-r7 < 0.82-r8 +0.82-r8 < 0.82-r9 +0.82-r9 < 0.91-r0 +0.91-r0 < 0.92.63-r0 +0.92.63-r0 < 0.92.79-r0 +0.92.79-r0 < 0.92.79-r1 +0.92.79-r1 < 0.95.0-r0 +0.95.0-r0 < 0.95.21-r0 +0.95.21-r0 < 0.95.79-r0 +0.95.79-r0 < 1.00-r0 +1.00-r0 < 1.00.24-r0 +1.00.24-r0 < 1.00.24-r1 +1.00.24-r1 < 1.00.40-r0 +1.00.40-r0 < 1.00.44-r0 +1.00.44-r0 < 1.00.79-r0 +1.00.79-r0 < 1.00.80-r0 +1.00.80-r0 < 1.00.80-r1 +1.00.80-r1 < 1.00.82-r0 +1.00.82-r0 < 1.00.82-r1 +1.00.82-r1 < 1.00.83-r0 +1.00.83-r0 < 1.00.84-r0 +1.00.84-r0 < 1.00.84-r1 +1.00.84-r1 < 1.00.87-r0 +1.00.87-r0 < 1.00.87-r1 +1.00.87-r1 < 1.00.104-r0 +1.00.104-r0 < 1.00.104-r1 +1.00.104-r1 < 1.00.111-r0 +1.00.111-r0 < 1.00.111-r1 +1.00.111-r1 < 1.1.1-r1 +1.3.1-r0 < 1.3.3-r0 +1.2.13-r1 < 1.2.13-r2 +1.2.13-r2 < 1.2.14-r0 +1.2.14-r0 < 1.2.14-r1 +1.2.14-r1 < 1.2.14-r2 +1.2.14-r2 < 1.2.14-r3 +1.2.14-r3 < 1.2.14-r4 +1.2.14-r4 < 1.2.14-r5 +1.2.10-r0 < 1.2.10-r1 +1.2.10-r1 < 1.2.10-r2 +1.2.10-r2 < 1.2.12-r2 +4.26-r1 < 5.00-r0 +5.00-r0 < 5.01-r0 +5.01-r0 < 5.03-r0 +5.03-r0 < 5.04-r0 +5.04-r0 < 5.04-r1 +5.04-r1 < 5.04-r2 +5.04-r2 < 5.05-r0 +5.05-r0 < 5.06-r0 +5.06-r0 < 5.07-r0 +5.07-r0 < 5.07-r1 +5.07-r1 < 5.08-r0 +5.08-r0 < 5.09-r0 +5.09-r0 < 5.09-r1 +5.09-r1 < 5.10-r0 +5.12-r0 < 5.14-r0 +5.17-r0 < 5.18-r0 +5.19-r0 < 5.19-r1 +5.19-r1 < 5.19-r2 +5.19-r2 < 5.20-r0 +5.25-r0 < 5.25-r1 +5.25-r1 < 5.26-r0 +5.30-r0 < 5.31-r0 +5.33-r1 < 5.35-r0 +5.35-r0 < 5.35-r1 +5.35-r1 < 5.36-r0 +4.3.3-r1 < 4.3.3-r2 +4.3.3-r2 < 4.4.1-r1 +4.4.1-r3 < 4.4.1-r10 +4.4.1-r10 < 4.4.2-r3 +4.4.2-r3 < 4.4.3-r3 +4.4.3-r3 < 4.4.4-r3 +4.4.4-r3 < 4.5.1-r3 +4.5.1-r3 < 4.5.2-r3 +4.5.2-r3 < 4.5.3-r3 +4.5.3-r3 < 4.6.0-r3 +4.6.0-r3 < 4.6.1-r3 +4.6.1-r3 < 4.6.2-r3 +4.6.2-r3 < 4.6.3-r3 +4.6.3-r3 < 4.7.1-r3 +4.7.1-r3 < 4.7.2-r3 +4.7.2-r3 < 4.7.3-r3 +4.7.3-r3 < 4.8.1-r3 +4.8.1-r3 < 4.8.2-r3 +4.8.2-r3 < 4.8.3-r3 +4.8.3-r3 < 4.9.2-r3 +4.9.2-r3 < 5.1.0-r3 +5.1.0-r3 < 5.2.0-r3 +5.2.0-r3 < 5.3.0-r3 +5.3.0-r3 < 6.1.0-r3 +6.1.0-r3 < 6.1.1-r3 +6.1.1-r3 < 6.2.0-r3 +6.2.0-r3 < 6.2.1-r3 +6.2.1-r3 < 6.3.0-r3 +6.3.0-r3 < 6.4.0-r3 +6.4.0-r3 < 8.2.0-r3 +8.2.0-r3 < 8.3.0-r3 +8.3.0-r3 < 9.2.0-r3 +1.2.8-r1 < 1.2.10-r0 +1.2.11-r1 < 1.2.11-r3 +1.2.11-r3 < 1.2.12-r0 +1.2.14-r0 < 1.2.15-r0 +1.2.15-r0 < 1.2.15-r1 +1.2.15-r1 < 1.3.1-r0 +1.3.4-r1 < 1.3.4-r2 +1.3.4-r2 < 1.4.1-r0 +1.4.1-r1 < 1.6.0-r0 +1.6.2-r2 < 1.7.0-r0 +1.4.10-r3 < 1.4.13-r0 +1.4.13-r1 < 1.4.13-r2 +1.4.13-r2 < 1.4.13-r3 +1.4.13-r3 < 1.4.14-r0 +1.4.15-r0 < 1.4.16-r0 +1.4.16-r0 < 1.4.17-r0 +1.4.19-r0 < 1.4.19-r1 +1.4.19-r1 < 1.4.19-r2 +1.4.19-r2 < 1.4.20-r0 +1.4.20-r0 < 1.4.20-r1 +1.4.20-r1 < 1.4.20-r2 +1.4.20-r2 < 1.4.21-r0 +1.4.21-r1 < 1.4.21-r2 +1.4.21-r2 < 1.4.22-r0 +1.4.22-r1 < 1.5.1-r0 +1.5.4-r0 < 1.5.6-r0 +1.5.6-r1 < 1.5.6-r2 +1.5.6-r2 < 1.5.6-r3 +1.5.6-r3 < 1.5.6-r4 +1.5.6-r4 < 1.5.7-r0 +1.5.8-r1 < 1.5.9-r0 +1.5.9-r0 < 1.5.9-r1 +1.5.9-r1 < 1.5.10-r0 +1.5.10-r0 < 1.5.10-r1 +1.5.10-r1 < 1.5.10-r2 +1.5.10-r2 < 1.6.0-r0 +1.6.7-r1 < 1.6.7-r2 +1.6.8-r0 < 1.7.0-r0 +1.7.0-r2 < 1.7.1-r0 +1.7.1-r0 < 1.7.1-r2 +1.7.1-r2 < 1.7.3-r0 +1.7.3-r0 < 1.8.0-r0 +1.8.1-r1 < 1.8.3-r0 +1.9.4-r1 < 1.9.5-r0 +1.9.5-r3 < 1.9.6-r0 +1.9.6-r0 < 1.9.6-r3 +1.9.6-r3 < 1.10.0-r0 +1.10.0-r0 < 1.10.0-r3 +1.10.0-r3 < 1.10.1-r0 +1.10.1-r1 < 1.11.0-r0 +1.13.0-r2 < 1.13.0-r3 +1.13.0-r3 < 1.13.1-r0 +1.15.0-r0 < 1.16.0-r0 +1.16.3-r1 < 1.17.0-r0 +1.17.0-r1 < 1.17.1-r0 +1.17.1-r4 < 1.18.0-r4 +1.18.0-r4 < 1.19.0-r4 +1.19.0-r4 < 1.19.1-r1 +1.19.1-r1 < 1.19.1-r4 +5.6.2-r0 < 5.8.0-r0 +5.8.0-r1 < 5.8.5-r0 +5.8.5-r0 < 5.8.7-r0 +5.8.7-r0 < 5.8.7-r1 +5.8.7-r1 < 6.2.0-r0 +6.2.0-r0 < 6.2.2-r0 +6.2.2-r1 < 6.2.2-r2 +6.2.2-r2 < 6.2.2-r3 +6.2.2-r3 < 6.4.2-r0 +6.4.2-r0 < 6.4.2-r1 +6.4.2-r1 < 6.4.2-r2 +6.4.2-r2 < 8.2.1-r0 +8.2.1-r0 < 8.2.2-r0 +8.2.2-r0 < 8.4.1-r0 +8.4.1-r0 < 8.4.2-r0 +8.4.2-r1 < 8.7.0-r0 +8.7.0-r0 < 8.9.0-r0 +8.9.0-r0 < 8.9.0-r1 +8.9.0-r1 < 8.9.0-r2 +8.9.0-r2 < 8.16.0-r0 +8.16.0-r0 < 8.18.0-r0 +8.18.0-r0 < 8.20.0-r0 +8.20.0-r0 < 8.20.0-r1 +8.20.0-r1 < 8.23.0-r0 +8.23.0-r0 < 8.23.0-r1 +8.23.0-r1 < 8.24.0-r0 +8.24.0-r0 < 8.24.0-r1 +8.24.0-r1 < 8.25.0-r0 +8.25.0-r0 < 8.25.0-r1 +8.25.0-r1 < 8.26.0-r0 +8.26.0-r0 < 8.26.0-r1 +8.26.0-r1 < 8.27.0-r0 +8.27.0-r0 < 8.27.0-r1 +8.27.0-r1 < 8.30.0-r0 +8.30.0-r0 < 8.30.0-r1 +8.30.0-r1 < 8.31.0-r0 +8.31.0-r0 < 8.31.0-r1 +8.31.0-r1 < 8.33.1-r0 +8.33.1-r0 < 8.33.1-r1 +8.33.1-r1 < 8.34.0-r0 +8.34.0-r0 < 8.34.0-r1 +8.34.0-r1 < 8.36.0-r0 +8.36.0-r0 < 8.36.0-r1 +8.36.0-r1 < 8.37.0-r0 +8.37.0-r0 < 8.37.0-r1 +8.37.0-r1 < 8.40.0-r0 +8.40.0-r0 < 8.40.0-r1 +8.40.0-r1 < 8.40.0-r2 +8.40.0-r2 < 8.40.0-r3 +8.40.0-r3 < 8.1904.0-r0 +8.1904.0-r0 < 8.1908.0-r0 +8.1908.0-r0 < 8.1910.0-r0 +8.1910.0-r0 < 8.1910.0-r1 +8.1910.0-r1 < 8.1911.0-r0 +8.1911.0-r0 < 8.1911.0-r1 +8.1911.0-r1 < 8.2001.0-r0 +8.2001.0-r0 < 8.2001.0-r1 +8.2001.0-r1 < 8.2002.0-r0 +8.2002.0-r0 < 8.2002.0-r1 +8.2002.0-r1 < 8.2002.0-r2 +8.2002.0-r2 < 8.2002.0-r3 +8.2002.0-r3 < 8.2004.0-r0 +8.2004.0-r0 < 8.2006.0-r0 +8.2006.0-r0 < 8.2006.0-r1 +8.2006.0-r1 < 8.2006.0-r2 +8.2006.0-r2 < 8.2008.0-r0 +8.2008.0-r0 < 8.2010.0-r0 +8.2010.0-r0 < 8.2010.0-r1 +8.2010.0-r1 < 8.2012.0-r0 +8.2012.0-r0 < 8.2012.0-r1 +8.2012.0-r1 < 8.2106.0-r0 +8.2106.0-r0 < 8.2106.0-r1 +8.2106.0-r1 < 8.2108.0-r0 +8.2108.0-r0 < 8.2108.0-r1 +8.2108.0-r1 < 8.2204.0-r0 +8.2204.0-r0 < 8.2204.0-r1 +1.8.1-r0 < 1.8.1.2-r0 +1.8.1.2-r0 < 1.8.2-r0 +1.8.3-r2 < 1.9.1-r0 +0.067-r0 < 0.068-r0 +0.068-r0 < 0.069-r0 +0.069-r0 < 0.069-r1 +0.069-r1 < 0.070-r0 +0.070-r0 < 0.071-r0 +0.071-r0 < 0.072-r0 +0.072-r0 < 0.073-r0 +0.073-r0 < 0.073-r1 +0.073-r1 < 0.074-r0 +0.074-r0 < 0.075-r0 +0.075-r0 < 0.076-r0 +0.076-r0 < 0.076-r1 +0.076-r1 < 0.077-r0 +0.077-r0 < 0.078-r0 +0.078-r0 < 0.078-r1 +0.60.6-r0 < 0.60.6-r1 +0.60.6-r1 < 0.60.6-r2 +0.60.6-r2 < 0.60.6-r3 +0.60.6-r3 < 0.60.6-r4 +0.60.6-r4 < 0.60.6-r5 +0.60.6-r5 < 0.60.6.1-r0 +0.60.6.1-r0 < 0.60.6.1-r1 +0.60.6.1-r1 < 0.60.6.1-r2 +0.60.6.1-r2 < 0.60.6.1-r3 +0.60.6.1-r3 < 0.60.6.1-r4 +0.60.6.1-r4 < 0.60.6.1-r5 +0.60.6.1-r5 < 0.60.6.1-r6 +0.60.6.1-r6 < 0.60.6.1-r7 +0.60.6.1-r7 < 0.60.6.1-r8 +0.60.6.1-r8 < 0.60.6.1-r9 +0.60.6.1-r9 < 0.60.6.1-r10 +0.60.6.1-r10 < 0.60.6.1-r11 +0.60.6.1-r11 < 0.60.6.1-r12 +0.60.6.1-r12 < 0.60.6.1-r13 +0.60.6.1-r13 < 0.60.7-r13 +0.19.2-r0 < 0.19.2-r1 +0.19.2-r1 < 0.19.2-r2 +0.19.2-r2 < 0.19.2-r3 +0.19.2-r3 < 0.19.2-r4 +0.19.2-r4 < 0.19.2-r5 +0.19.2-r5 < 0.19.4-r0 +0.19.4-r0 < 0.19.5-r0 +0.19.5-r0 < 0.19.5-r1 +0.19.5-r1 < 0.19.5-r2 +0.19.5-r2 < 0.19.6-r0 +0.19.6-r1 < 0.19.7-r0 +0.19.7-r1 < 1.0.1-r0 +1.0.2-r1 < 1.0.5-r0 +1.0.5-r1 < 1.0.7-r0 +1.0.7-r1 < 1.0.8-r0 +1.0.10-r0 < 1.0.11-r0 +1.3.17-r0 < 1.3.20-r0 +1.3.20-r0 < 1.3.20-r1 +1.3.20-r1 < 1.3.20-r2 +1.3.20-r2 < 1.4.10-r1 +1.4.10-r1 < 1.4.11-r0 +1.4.11-r0 < 1.4.15-r0 +1.4.15-r0 < 1.4.18-r0 +1.4.18-r0 < 1.4.18-r1 +1.4.18-r1 < 1.4.18-r2 +1.4.18-r2 < 1.4.18-r3 +1.4.18-r3 < 1.4.18-r4 +1.4.18-r4 < 1.4.22-r0 +1.4.22-r1 < 1.4.22-r2 +1.4.22-r2 < 1.4.22-r3 +1.4.22-r3 < 1.4.23-r0 +1.4.23-r0 < 1.4.24-r0 +1.4.24-r1 < 1.4.24-r2 +1.4.24-r2 < 1.4.24-r3 +1.4.24-r3 < 1.4.25-r0 +1.4.25-r0 < 1.5.11-r0 +1.5.11-r0 < 1.5.11-r1 +1.5.11-r1 < 1.5.12-r0 +1.5.12-r0 < 1.5.14-r0 +1.5.14-r0 < 1.6.4-r1 +1.6.4-r1 < 1.6.5-r1 +1.6.5-r1 < 1.6.6-r1 +1.6.6-r1 < 1.6.7-r1 +1.6.7-r1 < 1.6.9-r1 +1.6.9-r1 < 1.7.1-r1 +1.7.3-r1 < 1.7.4-r1 +1.7.4-r1 < 1.7.5-r1 +1.7.5-r1 < 1.7.7-r1 +1.7.7-r1 < 1.7.8-r1 +1.7.9-r1 < 1.8.5-r1 +1.8.5-r1 < 1.8.12-r1 +1.8.12-r1 < 1.8.23-r1 +1.8.23-r1 < 1.9.5-r1 +1.9.5-r1 < 1.9.6-r1 +1.9.6-r1 < 1.9.7-r1 +1.9.7-r1 < 2.0.0-r1 +2.0.0-r1 < 2.0.1-r1 +2.0.1-r1 < 2.0.3-r1 +2.0.3-r1 < 2.0.4-r1 +2.0.4-r1 < 2.0.5-r1 +2.0.5-r1 < 2.0.6-r1 +2.0.6-r1 < 2.0.7-r1 +2.0.7-r1 < 2.0.8-r1 +2.0.8-r1 < 2.0.9-r1 +2.0.9-r1 < 2.0.10-r1 +2.0.10-r1 < 2.0.11-r1 +2.0.11-r1 < 2.0.12-r1 +2.0.12-r1 < 2.0.13-r1 +2.0.13-r1 < 2.1.0-r1 +2.1.12-r1 < 2.2.0-r1 +2.2.3-r1 < 2.2.4-r1 +2.2.7-r1 < 2.2.9-r1 +2.2.11-r1 < 2.2.14-r1 +2.2.17-r1 < 2.2.20-r1 +7.1.1-r0 < 7.1.2-r0 +7.1.2-r0 < 7.2.0-r0 +7.2.0-r0 < 8.1.0-r0 +8.1.0-r0 < 8.1.2-r0 +8.1.2-r1 < 8.4.0-r1 +2.26.0-r1 < 2.26.2-r0 +2.26.2-r1 < 2.26.3-r0 +2.26.3-r0 < 2.26.3-r1 +2.26.3-r1 < 2.26.3-r2 +2.26.3-r2 < 2.26.3-r3 +2.26.3-r3 < 2.32.0-r0 +2.32.1-r1 < 2.34.0-r0 +2.34.0-r1 < 2.34.1-r0 +2.34.1-r0 < 2.34.2-r0 +2.34.2-r1 < 2.36.1-r0 +2.36.1-r0 < 2.36.3-r0 +2.36.3-r0 < 2.36.4-r0 +2.36.4-r0 < 2.37.0-r0 +2.37.0-r0 < 2.39.0-r0 +2.39.0-r0 < 2.39.0-r1 +2.39.0-r1 < 2.40.0-r1 +2.40.0-r1 < 2.40.1-r1 +2.40.1-r1 < 2.40.2-r0 +2.40.2-r0 < 2.40.5-r0 +2.40.5-r0 < 2.40.6-r0 +2.40.6-r0 < 2.40.9-r0 +2.40.9-r0 < 2.40.9-r1 +2.40.9-r1 < 2.40.11-r0 +2.40.11-r0 < 2.40.12-r0 +2.40.12-r0 < 2.40.13-r0 +2.40.13-r0 < 2.40.15-r0 +2.40.15-r0 < 2.40.16-r0 +2.40.16-r0 < 2.40.16-r1 +2.40.16-r1 < 2.40.16-r2 +2.40.16-r2 < 2.40.17-r2 +2.40.17-r2 < 2.40.19-r2 +2.40.19-r2 < 2.40.20-r2 +2.6.28-r0 < 2.6.29.1-r0 +2.6.29.1-r0 < 2.6.31-r0 +2.6.31-r0 < 2.6.31-r1 +2.6.31-r1 < 2.6.33-r0 +2.6.33-r0 < 2.6.33-r1 +2.6.33-r1 < 2.6.34-r0 +2.6.34-r0 < 2.6.35-r0 +2.6.35-r0 < 2.6.35-r1 +2.6.35-r1 < 2.6.35-r2 +2.6.35-r2 < 2.6.35-r3 +2.6.35-r3 < 2.6.37-r0 +2.6.37-r0 < 2.6.38-r0 +2.6.38-r0 < 2.6.38-r1 +2.6.38-r1 < 3.2.0-r0 +3.2.0-r0 < 3.3.0-r0 +3.3.0-r0 < 3.4.0-r0 +3.4.0-r0 < 3.5.1-r0 +3.5.1-r0 < 3.6.0-r0 +3.6.0-r0 < 3.7.0-r0 +3.7.0-r0 < 3.9.0-r0 +3.9.0-r0 < 3.10.0-r0 +3.10.0-r0 < 3.11.0-r0 +3.11.0-r0 < 3.12.0-r0 +3.12.0-r0 < 3.14.0-r0 +3.14.0-r0 < 3.15.0-r0 +3.15.0-r0 < 3.18.0-r0 +3.18.0-r0 < 4.2.0-r0 +4.2.0-r0 < 4.4.0-r0 +4.4.0-r1 < 4.6.0-r0 +4.6.0-r2 < 4.7.0-r0 +4.7.0-r0 < 4.9.0-r0 +4.9.0-r0 < 4.10.0-r0 +4.10.0-r1 < 4.12.0-r0 +4.12.0-r0 < 4.13.0-r0 +4.13.0-r0 < 4.17.0-r0 +4.17.0-r0 < 4.19.0-r0 +4.19.0-r0 < 4.20.0-r0 +4.20.0-r0 < 4.20.0-r1 +6.0-r0 < 6.6-r0 +6.6-r0 < 6.6-r1 +6.6-r1 < 6.6-r2 +6.6-r2 < 6.6-r3 +6.6-r3 < 6.6.1-r0 +6.6.1-r0 < 6.6.1-r3 +6.6.1-r3 < 6.8-r0 +1.14.1-r1 < 1.14.2-r0 +1.14.2-r1 < 1.15.0-r0 +1.15.0-r0 < 1.15.1-r0 +1.15.1-r0 < 1.15.1-r1 +1.15.1-r1 < 1.15.2-r0 +1.16.3-r0 < 1.16.4-r0 +1.16.4-r0 < 1.16.5-r0 +1.16.5-r0 < 1.17.0-r0 +1.17.0-r0 < 1.17.1-r0 +1.17.1-r0 < 1.18.0-r0 +1.18.1-r1 < 1.18.3-r0 +1.18.4-r0 < 1.18.5-r0 +1.18.5-r0 < 1.18.6-r0 +1.18.6-r0 < 1.18.7-r0 +1.18.7-r0 < 1.18.8-r0 +1.18.8-r0 < 1.18.9-r0 +1.18.9-r0 < 1.18.10-r0 +1.18.10-r0 < 1.18.10-r1 +1.18.10-r1 < 1.19.0-r0 +1.19.2-r0 < 1.19.3-r0 +1.19.3-r0 < 1.20.0-r0 +1.20.0-r0 < 1.21.0-r0 +1.22.0-r0 < 1.23.0-r0 +1.23.0-r0 < 1.24.0-r0 +1.24.0-r0 < 1.25.0-r0 +1.25.0-r0 < 1.26.0-r0 +1.26.1-r0 < 1.31.0-r0 +1.31.0-r0 < 1.32.0-r0 +1.32.0-r1 < 1.33.0-r1 +1.41.3-r1 < 1.41.3-r2 +1.41.3-r2 < 1.41.3-r3 +1.41.3-r3 < 1.41.4-r0 +1.41.4-r0 < 1.41.4-r1 +1.41.4-r1 < 1.41.5-r0 +1.41.5-r0 < 1.41.6-r0 +1.41.6-r0 < 1.41.8-r0 +1.41.8-r0 < 1.41.8-r1 +1.41.8-r1 < 1.41.8-r2 +1.41.8-r2 < 1.41.9-r0 +1.41.9-r0 < 1.41.9-r1 +1.41.9-r1 < 1.41.9-r2 +1.41.9-r2 < 1.41.9-r3 +1.41.9-r3 < 1.41.10-r0 +1.41.10-r0 < 1.41.11-r0 +1.41.11-r0 < 1.41.11-r1 +1.41.11-r1 < 1.41.12-r0 +1.41.12-r0 < 1.41.13-r0 +1.41.13-r0 < 1.41.14-r0 +1.41.14-r0 < 1.41.14-r1 +1.41.14-r1 < 1.41.14-r2 +1.41.14-r2 < 1.42.3-r0 +1.42.3-r0 < 1.42.4-r0 +1.42.4-r0 < 1.42.5-r0 +1.42.5-r0 < 1.42.6-r0 +1.42.6-r0 < 1.42.7-r0 +1.42.7-r0 < 1.42.8-r0 +1.42.8-r0 < 1.42.8-r1 +1.42.8-r1 < 1.42.9-r0 +1.42.9-r0 < 1.42.10-r0 +1.42.10-r0 < 1.42.11-r0 +1.42.11-r0 < 1.42.12-r0 +1.42.12-r0 < 1.42.12-r1 +1.42.12-r1 < 1.42.13-r0 +1.42.13-r0 < 1.42.13-r1 +1.42.13-r1 < 1.42.13-r2 +1.42.13-r2 < 1.43-r0 +1.43-r0 < 1.43-r1 +1.43-r1 < 1.43-r2 +1.43-r2 < 1.43.1-r0 +1.43.1-r0 < 1.43.1-r2 +1.43.1-r2 < 1.43.2-r0 +1.43.2-r0 < 1.43.2-r2 +1.43.2-r2 < 1.43.3-r0 +1.43.3-r0 < 1.43.3-r2 +1.43.3-r2 < 1.43.4-r0 +1.43.4-r0 < 1.43.4-r2 +1.43.4-r2 < 1.43.6-r0 +1.43.6-r0 < 1.43.6-r2 +1.43.6-r2 < 1.43.7-r0 +1.43.7-r0 < 1.43.8-r0 +1.43.8-r0 < 1.43.8-r1 +1.43.8-r1 < 1.43.9-r0 +1.43.9-r0 < 1.43.9-r1 +1.43.9-r1 < 1.44.0-r0 +1.44.0-r0 < 1.44.0-r1 +1.44.0-r1 < 1.44.1-r0 +1.44.1-r0 < 1.44.1-r1 +1.44.1-r1 < 1.44.2-r0 +1.44.2-r0 < 1.44.2-r1 +1.44.2-r1 < 1.44.3-r0 +1.44.3-r0 < 1.44.3-r1 +1.44.3-r1 < 1.44.4-r0 +1.44.4-r0 < 1.44.4-r1 +1.44.4-r1 < 1.44.5-r0 +1.44.5-r0 < 1.44.5-r1 +1.44.5-r1 < 1.45.0-r0 +1.45.0-r0 < 1.45.0-r1 +1.45.0-r1 < 1.45.1-r0 +1.45.1-r0 < 1.45.1-r1 +1.45.1-r1 < 1.45.2-r0 +1.45.2-r0 < 1.45.2-r1 +1.45.2-r1 < 1.45.3-r0 +1.45.3-r0 < 1.45.3-r1 +1.45.3-r1 < 1.45.4-r0 +1.45.4-r0 < 1.45.4-r1 +1.45.4-r1 < 1.45.5-r0 +1.45.5-r0 < 1.45.6-r0 +1.45.6-r0 < 1.45.6-r1 +1.45.6-r1 < 1.45.7-r0 +1.45.7-r0 < 1.45.7-r1 +1.45.7-r1 < 1.46.1-r0 +1.46.1-r0 < 1.46.1-r1 +1.46.1-r1 < 1.46.2-r0 +1.46.2-r0 < 1.46.2-r1 +1.46.2-r1 < 1.46.4-r0 +1.46.4-r0 < 1.46.4-r1 +1.46.4-r1 < 1.46.5-r0 +1.46.5-r0 < 1.46.5-r1 +1.46.5-r1 < 1.46.5-r2 +1.46.5-r2 < 1.46.5-r3 +1.46.5-r3 < 1.46.5-r4 +1.4.0-r2 < 1.5.0-r0 +1.5.0-r2 < 1.5.0-r3 +2.0.6-r1 < 2.0.7-r0 +2.0.7-r3 < 2.0.8-r0 +2.0.8-r1 < 2.0.9-r0 +0.9.2-r0 < 0.9.5-r0 +0.9.5-r0 < 0.9.6-r0 +0.9.6-r1 < 0.9.7-r0 +0.9.7-r0 < 0.9.7_p1-r0 +0.9.7_p1-r0 < 1.0.0-r0 +1.0.0-r0 < 1.1.0-r0 +1.3.0-r2 < 1.4.0-r0 +1.4.0-r1 < 1.5.0-r0 +1.5.0-r0 < 1.6.1-r0 +1.6.1-r1 < 1.8.0-r1 +1.3.4-r0 < 1.5.0-r0 +1.5.0-r0 < 1.6.0-r0 +1.6.0-r0 < 1.7.0-r0 +1.8.0-r0 < 1.9.1-r0 +1.9.2-r0 < 1.10.0-r0 +1.10.0-r0 < 1.11.0-r0 +1.11.1-r0 < 1.12.0-r0 +1.13.0-r0 < 1.14.0-r0 +1.14.1-r0 < 1.15.0-r0 +1.16.1-r0 < 1.17.0-r0 +1.17.0-r0 < 1.18.0-r0 +1.18.0-r1 < 1.18.1-r0 +1.18.1-r0 < 1.20.0-r0 +1.21.1-r1 < 1.22.0-r0 +1.22.0-r0 < 1.23.1-r0 +1.23.1-r0 < 1.24.0-r0 +1.26.0-r0 < 1.27.0-r0 +1.27.0-r1 < 1.28.0-r0 +1.28.0-r1 < 1.29.0-r0 +1.29.0-r0 < 1.30.0-r0 +1.30.0-r0 < 1.31.0-r0 +1.31.0-r1 < 1.31.1-r0 +1.31.1-r1 < 1.32.0-r0 +1.32.0-r1 < 1.33.0-r0 +1.33.0-r1 < 1.34.0-r0 +1.34.0-r1 < 1.35.1-r0 +1.35.1-r0 < 1.35.1-r1 +1.35.1-r1 < 1.36.0-r0 +1.36.0-r0 < 1.37.0-r0 +1.37.0-r0 < 1.37.0-r1 +1.37.0-r1 < 1.38.0-r0 +1.38.0-r0 < 1.38.0-r1 +1.38.0-r1 < 1.39.1-r0 +1.39.1-r0 < 1.39.1-r1 +1.39.1-r1 < 1.39.2-r0 +1.39.2-r0 < 1.39.2-r1 +1.39.2-r1 < 1.39.2-r2 +1.39.2-r2 < 1.40.0-r0 +1.40.0-r0 < 1.40.0-r2 +1.40.0-r2 < 1.41.0-r0 +1.41.0-r0 < 1.42.0-r0 +1.42.0-r0 < 1.42.0-r1 +1.42.0-r1 < 1.43.0-r0 +1.43.0-r0 < 1.44.0-r0 +1.44.0-r1 < 1.44.0-r2 +1.44.0-r2 < 1.46.0-r0 +1.46.0-r0 < 1.46.0-r2 +1.46.0-r2 < 1.47.0-r0 +1.47.0-r0 < 1.48.0-r0 +1.48.0-r0 < 1.48.0-r1 +1.48.0-r1 < 1.49.0-r0 +1.49.0-r0 < 1.49.0-r1 +1.49.0-r1 < 1.50.0-r0 +1.50.0-r0 < 1.50.0-r1 +1.50.0-r1 < 1.51.0-r0 +1.51.0-r0 < 1.51.0-r1 +1.51.0-r1 < 1.52.0-r0 +1.52.0-r0 < 1.52.0-r1 +1.52.0-r1 < 1.53.0-r1 +1.53.0-r1 < 1.55.1-r1 +2.3.2-r1 < 2.3.3-r1 +2009.4.4-r0 < 2009.11.14-r0 +2009.11.14-r0 < 2010.3.6-r0 +2010.3.6-r0 < 2010.3.6-r1 +2010.3.6-r1 < 2010.5.16-r0 +2010.5.16-r0 < 2010.5.22-r0 +2010.5.22-r0 < 2010.8.8-r0 +2010.8.8-r0 < 2010.10.2-r0 +2010.10.2-r0 < 2011.1.15-r0 +2011.1.15-r0 < 2011.4.12-r0 +2011.4.12-r0 < 2011.4.12-r1 +2011.4.12-r1 < 2012.1.15-r0 +2012.1.15-r0 < 2013.1.13-r0 +2013.1.13-r0 < 2013.1.13-r1 +2013.1.13-r1 < 2014.2.15-r0 +2014.2.15-r0 < 2015.3.14-r0 +2015.3.14-r0 < 2016.2.22-r0 +2016.2.22-r0 < 2016.2.22-r1 +2016.2.22-r1 < 2017.3.23-r0 +2017.3.23-r0 < 2017.3.23-r1 +2017.3.23-r1 < 2017.3.23-r2 +2017.3.23-r2 < 2017.3.23-r3 +2017.3.23-r3 < 2021.8.22-r3 +2021.8.22-r3 < 2022.5.17-r3 +0.10.7-r0 < 0.12.0-r0 +0.12.0-r1 < 0.12.1-r0 +0.12.3-r1 < 0.12.3-r2 +0.12.3-r2 < 0.12.4-r0 +0.12.4-r0 < 0.12.4-r1 +0.12.4-r1 < 0.14.0-r0 +0.14.0-r1 < 0.14.3-r0 +0.14.5-r0 < 0.16.0-r0 +0.16.0-r0 < 0.16.2-r0 +0.16.2-r0 < 0.16.3-r0 +0.16.3-r0 < 0.16.4-r0 +0.16.4-r0 < 0.16.4-r1 +0.16.4-r1 < 0.16.5-r0 +0.16.5-r0 < 0.16.7-r0 +0.16.7-r0 < 0.18.0-r0 +0.18.0-r0 < 0.18.1-r0 +0.18.1-r0 < 0.18.2-r0 +0.18.2-r0 < 0.18.3-r0 +0.18.3-r0 < 0.18.4-r0 +0.18.4-r0 < 0.20.0-r0 +0.20.0-r0 < 0.20.1-r0 +0.20.1-r0 < 0.20.2-r0 +0.20.2-r0 < 0.20.3-r0 +0.20.3-r0 < 0.20.3-r1 +0.20.3-r1 < 0.20.5-r0 +0.20.5-r0 < 0.22.0-r0 +0.22.0-r0 < 0.22.1-r0 +0.22.1-r0 < 0.22.1-r1 +0.22.1-r1 < 0.24.2-r0 +0.24.2-r1 < 0.24.2-r2 +0.24.2-r2 < 0.24.3-r0 +0.24.3-r0 < 0.24.4-r0 +0.24.4-r0 < 0.24.5-r0 +0.24.5-r0 < 0.26.3-r0 +0.26.3-r0 < 0.26.4-r0 +0.26.4-r0 < 0.26.5-r0 +0.26.5-r0 < 0.28.1-r0 +0.28.1-r0 < 0.29.0-r0 +0.29.0-r0 < 0.32.0-r0 +0.32.0-r0 < 0.33.0-r0 +0.33.0-r0 < 0.37.0-r0 +0.37.0-r0 < 0.38.0-r0 +0.38.0-r0 < 0.39.0-r0 +0.39.0-r0 < 0.40.0-r0 +0.40.0-r0 < 0.41.0-r0 +0.41.0-r0 < 0.43.0-r0 +0.43.0-r0 < 0.43.0-r1 +0.43.0-r1 < 0.47.0-r0 +0.47.0-r0 < 0.47.0-r1 +0.47.0-r1 < 0.48.0-r0 +0.48.0-r0 < 0.48.0-r1 +0.48.0-r1 < 0.50.0-r0 +0.50.0-r0 < 0.50.0-r1 +0.50.0-r1 < 0.52.0-r0 +0.52.0-r0 < 0.52.0-r1 +0.52.0-r1 < 0.54.0-r0 +0.54.0-r0 < 0.54.0-r1 +0.54.0-r1 < 0.56.0-r0 +0.56.0-r0 < 0.56.0-r1 +0.56.0-r1 < 0.71.0-r0 +0.71.0-r0 < 0.71.0-r1 +1.8.1-r2 < 1.10.4-r0 +1.10.4-r0 < 1.10.4-r1 +1.10.4-r1 < 1.12.0-r0 +1.12.1-r2 < 1.12.3-r0 +1.12.3-r0 < 1.12.3-r1 +1.12.3-r1 < 1.14.0-r0 +1.14.4-r1 < 1.16.0-r0 +1.16.2-r2 < 1.16.2-r3 +1.16.2-r3 < 1.18.1-r0 +0.8.8-r0 < 0.8.9-r0 +0.8.9-r0 < 0.8.10-r0 +0.8.10-r0 < 0.8.10-r1 +0.8.10-r1 < 1.0.0-r0 +1.0.0-r2 < 1.0.1-r0 +1.0.1-r1 < 1.0.3-r1 +1.0.3-r1 < 1.0.4-r1 +1.0.4-r1 < 1.0.5-r1 +2.02_beta3-r0 < 2.02_beta3-r1 +2.02_beta3-r1 < 2.02_beta3-r2 +2.02_beta3-r2 < 2.02_beta3-r3 +2.02_beta3-r3 < 2.02_beta3-r4 +2.02_beta3-r4 < 2.02_beta3-r5 +2.02_beta3-r5 < 2.02_beta3-r6 +2.02_beta3-r6 < 2.02_beta3-r7 +2.02_beta3-r7 < 2.02-r0 +2.02-r0 < 2.02-r1 +2.02-r1 < 2.02-r2 +2.02-r2 < 2.02-r3 +2.02-r3 < 2.02-r4 +2.02-r4 < 2.02-r5 +2.02-r5 < 2.02-r6 +2.02-r6 < 2.02-r7 +2.02-r7 < 2.02-r8 +2.02-r8 < 2.02-r9 +2.02-r9 < 2.02-r10 +2.02-r10 < 2.02-r11 +2.02-r11 < 2.02-r12 +2.02-r12 < 2.02-r13 +2.02-r13 < 2.02-r14 +2.02-r14 < 2.02-r15 +2.02-r15 < 2.02-r16 +2.02-r16 < 2.02-r17 +2.02-r17 < 2.02-r18 +2.02-r18 < 2.02-r19 +2.02-r19 < 2.02-r20 +2.02-r20 < 2.04-r0 +2.04-r0 < 2.04-r1 +2.04-r1 < 2.04-r2 +2.04-r2 < 2.04-r3 +2.04-r3 < 2.06-r3 +0.13.5-r0 < 0.13.6-r0 +0.13.6-r0 < 0.13.7.5-r0 +0.13.7.5-r0 < 0.14.2-r0 +0.14.2-r0 < 0.14.3-r0 +0.14.3-r0 < 0.16-r0 +0.16-r0 < 1.0.1-r0 +1.0.3-r0 < 1.1.1-r0 +1.1.1-r0 < 1.2-r0 +0.10-r0 < 0.11-r0 +0.11-r0 < 0.12-r0 +0.12-r1 < 0.12.1-r0 +0.12.1-r0 < 0.12.1-r1 +0.12.1-r1 < 0.12.1-r2 +0.12.1-r2 < 0.12.1-r3 +0.12.1-r3 < 0.13.1-r0 +0.13.1-r0 < 0.13.1-r3 +0.13.1-r3 < 0.14-r0 +0.99.2-r0 < 0.99.4-r0 +0.99.4-r0 < 0.99.7-r0 +0.99.7-r0 < 0.99.8-r0 +0.99.8-r0 < 0.99.8-r1 +0.99.8-r1 < 0.99.8-r2 +0.99.8-r2 < 0.99.9-r0 +0.99.9-r0 < 0.99.9-r1 +0.99.9-r1 < 0.99.9-r2 +3.0.4-r1 < 3.0.5-r0 +3.0.5-r1 < 3.0.8-r0 +3.0.8-r1 < 3.0.9-r0 +3.0.9-r1 < 3.0.10-r0 +3.0.10-r0 < 3.1.2-r0 +3.1.3-r1 < 3.1.5-r1 +2.4-r2 < 2.16.1-r0 +2.16.1-r1 < 2.16.1-r2 +2.16.1-r2 < 2.17.3-r0 +2.17.3-r0 < 2.17.3-r2 +2.17.3-r2 < 2.17.4-r0 +2.17.4-r0 < 2.17.4-r2 +2.17.4-r2 < 2.17.5-r0 +2.17.5-r0 < 2.17.5-r2 +2.17.5-r2 < 2.17.6-r0 +2.17.6-r0 < 2.17.6-r2 +2.17.6-r2 < 2.17.7-r0 +2.17.7-r0 < 2.17.7-r2 +14.1-r1 < 15-r0 +15-r0 < 15-r1 +15-r1 < 15-r2 +15-r2 < 16-r0 +16-r0 < 17-r0 +17-r0 < 17.1-r0 +17.1-r0 < 18-r0 +18-r0 < 18-r1 +18-r1 < 18-r2 +18-r2 < 18-r3 +18-r3 < 19.1-r0 +19.1-r0 < 19.2-r0 +19.2-r0 < 20-r0 +20-r0 < 20-r1 +20-r1 < 20.2-r1 +20.2-r1 < 20.2-r2 +20.2-r2 < 20.3-r0 +20.3-r0 < 21-r0 +21-r0 < 21.1-r0 +21.1-r0 < 21.1-r1 +21.1-r1 < 21.1-r2 +21.1-r2 < 22-r0 +22-r0 < 22-r1 +22-r1 < 22.1-r0 +22.1-r0 < 22.1-r1 +22.1-r1 < 23-r0 +23-r0 < 23-r1 +23-r1 < 23-r2 +23-r2 < 23-r3 +23-r3 < 24-r0 +24-r0 < 24-r1 +24-r1 < 24-r2 +24-r2 < 24-r3 +24-r3 < 24-r4 +24-r4 < 25-r0 +4.9-r0 < 5.3-r0 +5.4-r0 < 5.6-r0 +5.8-r0 < 5.9-r0 +5.9-r0 < 6.0-r0 +6.0-r0 < 6.1-r0 +6.2-r1 < 6.3-r0 +6.3-r0 < 6.4-r0 +6.4-r0 < 6.4-r1 +6.4-r1 < 6.4-r2 +6.4-r2 < 6.5-r0 +6.5-r0 < 6.6-r0 +6.6-r0 < 6.7-r0 +6.7-r0 < 6.7-r1 +6.7-r1 < 6.8-r0 +6.8-r0 < 6.8-r1 +6.8-r1 < 6.9-r0 +6.9-r0 < 6.9-r1 +6.9-r1 < 6.10-r0 +6.10-r1 < 6.11-r0 +6.11-r0 < 6.11-r1 +6.11-r1 < 6.12-r1 +6.12-r1 < 6.13-r1 +6.13-r1 < 6.14-r1 +3.10-r0 < 3.10-r1 +3.10-r1 < 3.11-r0 +3.11-r0 < 3.12-r0 +3.12-r0 < 3.12-r1 +3.12-r1 < 4.1-r0 +4.1-r0 < 5.1-r0 +5.1.2-r1 < 5.1.2-r2 +5.1.2-r2 < 5.2-r0 +5.2-r0 < 5.2-r2 +5.2-r2 < 5.3-r0 +5.3-r0 < 5.3-r2 +5.3-r2 < 5.3.1-r0 +1.23-r1 < 1.23-r2 +1.23-r2 < 1.23-r3 +1.23-r3 < 1.23-r4 +1.23-r4 < 1.23-r5 +1.23-r5 < 1.23-r6 +1.23-r6 < 1.23-r7 +1.23-r7 < 1.23-r8 +1.23-r8 < 1.26-r0 +1.26-r1 < 1.27_pre1-r0 +1.27_pre1-r0 < 1.27-r0 +1.27-r0 < 1.28-r0 +1.28-r0 < 1.29-r0 +1.29-r1 < 1.29.1-r0 +1.29.1-r0 < 1.30-r0 +1.30-r0 < 1.31-r0 +1.31-r0 < 1.31.1-r0 +1.31.1-r1 < 2.0-r0 +2.0-r0 < 2.1.1-r0 +2.1.1-r2 < 2.1.1-r3 +2.1.1-r3 < 2.1.1-r4 +2.1.1-r4 < 2.1.1-r5 +2.1.1-r5 < 2.1.1-r6 +2.1.1-r6 < 2.1.1-r7 +2.1.1-r7 < 2.2-r0 +2.2-r0 < 2.2.1-r0 +2.2.1-r1 < 2.3-r0 +2.4-r0 < 2.4.1-r0 +2.4.1-r0 < 3.0-r0 +3.0-r0 < 3.1-r0 +3.1-r1 < 3.1-r2 +3.1-r2 < 3.2-r0 +3.2-r1 < 3.2-r2 +3.2-r2 < 3.2-r3 +3.2-r3 < 3.3-r0 +3.4-r1 < 3.4-r2 +3.4-r2 < 3.5-r0 +3.5-r1 < 3.5-r2 +1.0.7-r1 < 1.1.0-r0 +1.1.0-r0 < 1.1.2-r0 +1.1.2-r0 < 1.1.3-r0 +1.1.3-r0 < 1.2.0-r0 +1.3.1-r2 < 1.4.0-r0 +1.4.3-r0 < 1.5.0-r0 +1.5.1-r0 < 1.6.0-r0 +1.6.1-r1 < 1.6.2-r1 +1.6.6-r3 < 1.6.6-r4 +1.6.6-r4 < 1.6.7-r0 +1.7.2-r2 < 1.7.4-r0 +1.7.4-r1 < 1.7.5-r0 +1.7.5-r1 < 2.0.0-r0 +2.0.0-r1 < 2.0.1-r0 +2.0.2-r3 < 2.0.4-r0 +2.0.4-r2 < 2.0.6-r0 +2.0.6-r0 < 2.0.6-r2 +2.0.6-r2 < 2.1.0-r0 +2.1.0-r0 < 2.1.0-r2 +2.1.0-r2 < 2.2.0-r0 +2.2.0-r0 < 2.2.0-r2 +2.2.0-r2 < 2.2.1-r0 +2.3.2-r1 < 2.3.3-r0 +2.3.5-r0 < 2.3.5-r2 +2.3.5-r2 < 2.3.6-r0 +2.3.6-r0 < 2.3.6-r2 +2.3.6-r2 < 2.4.0-r0 +2.4.0-r3 < 2.4.1-r0 +2.4.1-r0 < 2.4.1-r3 +2.4.1-r3 < 2.4.2-r0 +2.4.2-r0 < 2.4.2-r3 +1.0.1-r0 < 1.4-r0 +1.6-r2 < 1.10-r0 +1.10-r0 < 2.0-r0 +2.2.1-r0 < 2.3-r0 +2.4-r0 < 2.4.5-r0 +2.4.5-r0 < 2.5.5-r0 +2.5.5-r1 < 2.5.5-r2 +2.5.5-r2 < 2.5.5-r3 +2.5.5-r3 < 2.5.5-r4 +2.5.5-r4 < 2.7.2-r0 +2.7.2-r1 < 2.7.2-r2 +2.7.2-r2 < 2.7.2-r3 +2.7.2-r3 < 2.7.2-r4 +2.7.2-r4 < 2.8-r0 +2.8-r0 < 2.8-r4 +2.8-r4 < 2.9-r0 +2.9-r0 < 2.9-r4 +2.9-r4 < 2.11-r0 +2.11-r0 < 2.11-r4 +2.11-r4 < 2.11.1-r0 +2.11.1-r1 < 2.11.1-r2 +2.11.1-r2 < 2.12-r0 +2.12-r0 < 2.12-r2 +2.12-r2 < 2.12.1-r0 +2.12.1-r0 < 2.12.1-r1 +2.12.1-r1 < 2.12.1-r2 +2.12.1-r2 < 2.12.1-r3 +2.12.1-r3 < 2.13-r0 +2.13-r1 < 2.13-r2 +2.13-r2 < 2.13-r3 +2.13-r3 < 2.13.1-r2 +2.13.1-r2 < 2.13.1-r3 +5.5.9-r0 < 5.5.9-r1 +5.5.9-r1 < 5.5.9-r2 +5.5.9-r2 < 5.5.9-r3 +5.5.9-r3 < 5.6.1-r0 +5.6.1-r1 < 7.0.0-r0 +7.0.0-r1 < 7.0.0-r2 +7.0.0-r2 < 7.0.0-r3 +7.0.0-r3 < 7.0.0-r4 +7.0.0-r4 < 7.0.1-r0 +7.0.2-r0 < 7.0.2-r1 +2.0.0_beta8-r0 < 2.0.0-r0 +2.0.0-r0 < 2.0.3-r0 +2.0.3-r1 < 2.0.3-r2 +2.0.3-r2 < 2.0.4-r0 +2.0.4-r0 < 2.1.0_beta2-r0 +2.1.0_beta2-r0 < 2.1.0_beta2-r1 +2.1.0_beta2-r1 < 2.1.0_beta2-r2 +2.1.0_beta2-r2 < 2.1.0_beta2-r3 +2.1.0_beta2-r3 < 2.1.0_beta2-r4 +2.1.0_beta2-r4 < 2.1.0_beta3-r0 +2.1.0_beta3-r0 < 2.1.0_beta3-r1 +2.1.0_beta3-r1 < 2.1.0_beta3-r2 +2.1.0_beta3-r2 < 2.1.0_beta3-r3 +2.1.0_beta3-r3 < 2.1.0_beta3-r4 +2.1.0_beta3-r4 < 2.1.0_beta3-r5 +2.1.0_beta3-r5 < 2.1.0_beta3-r6 +2.28.0-r1 < 2.28.0-r2 +2.28.0-r2 < 2.28.0-r3 +2.28.0-r3 < 2.30.1-r0 +2.30.1-r1 < 2.32.0-r0 +2.32.0-r0 < 2.34.0-r0 +2.36.0-r0 < 2.38.0-r0 +2.38.0-r1 < 2.38.0-r2 +2.38.0-r2 < 2.38.0-r3 +2.38.0-r3 < 2.38.0-r4 +2.38.0-r4 < 2.38.0-r5 +2.38.0-r5 < 2.38.0-r6 +2.38.0-r6 < 2.40.1-r0 +2.40.1-r0 < 2.40.1-r1 +2.40.1-r1 < 2.42.2-r0 +2.42.2-r0 < 2.42.2-r1 +2.42.2-r1 < 2.42.3-r0 +2.42.3-r0 < 2.42.3-r1 +2.42.3-r1 < 2.44.0-r0 +1.0.4-r0 < 1.0.8-r0 +1.0.8-r0 < 1.0.8-r1 +1.0.8-r1 < 1.0.8-r2 +1.0.8-r2 < 1.0.9-r0 +1.0.9-r0 < 1.0.11-r0 +1.0.11-r1 < 1.0.11-r2 +1.0.11-r2 < 1.0.12-r1 +1.0.12-r1 < 1.0.12-r2 +1.3-r4 < 1.3-r5 +1.3-r5 < 1.3-r6 +1.3-r6 < 1.3-r7 +1.3-r7 < 1.4-r7 +1.4-r7 < 1.4.1-r7 +2.3-r4 < 2.3-r5 +2.3-r5 < 2.4.1-r5 +2.4.1-r5 < 2.4.2-r0 +2.4.3-r1 < 2.5-r0 +2.5-r0 < 2.5.1-r0 +2.5.1-r0 < 2.6-r0 +2.6.5-r0 < 2.7-r0 +2.7.1-r0 < 3.0-r0 +3.0-r1 < 3.0.1-r0 +3.0.1-r0 < 3.0.1-r1 +3.0.1-r1 < 3.0.2-r0 +3.0.4-r1 < 3.0.5-r1 +3.0.5-r1 < 3.3.2-r1 +3.3.2-r1 < 3.4.1-r1 +3.4.1-r1 < 3.4.2-r1 +3.4.2-r1 < 3.5-r1 +3.5-r1 < 3.5.1-r1 +3.5.1-r1 < 3.5.2-r1 +3.5.2-r1 < 3.5.3-r1 +3.5.3-r1 < 3.5.4-r1 +3.5.4-r1 < 3.6-r1 +3.6-r1 < 3.6.1-r1 +3.6.1-r1 < 3.6.2-r1 +3.6.2-r1 < 3.6.3-r1 +3.6.3-r1 < 3.6.4-r1 +3.6.4-r1 < 3.7.1-r1 +0.6.1-r0 < 0.8.2-r0 +0.8.2-r0 < 1.0.2-r0 +1.0.2-r0 < 1.3.1-r0 +1.3.2-r0 < 1.4-r0 +1.4-r2 < 1.5.2-r0 +1.5.3-r0 < 1.7.2-r0 +1.8.1-r1 < 1.9-r0 +1.9-r0 < 2.0.2-r0 +2.0.3-r1 < 2.1.3-r0 +2.1.4-r1 < 2.2.2-r0 +2.2.2-r0 < 2.3.1-r0 +2.3.1-r1 < 2.4.2-r0 +2.4.2-r2 < 2.5-r0 +2.5-r0 < 2.6.1-r0 +2.6.1-r1 < 2.7-r0 +2.8-r1 < 2.9-r1 +2.9-r1 < 2.9.2-r1 +2.9.2-r1 < 3.2.1-r1 +3.2.1-r1 < 3.3-r1 +3.3-r1 < 3.3.1-r1 +1.9-r1 < 1.9-r2 +1.9-r2 < 1.10-r0 +1.10-r0 < 1.10-r1 +1.10-r1 < 1.11-r0 +1.11-r2 < 1.11-r3 +1.11-r3 < 1.11-r4 +1.11-r4 < 1.11-r5 +1.11-r5 < 1.12-r0 +1.12-r4 < 1.12-r5 +1.12-r5 < 1.12-r6 +1.12-r6 < 1.13-r6 +5.9.6-r0 < 6.0.0-r0 +6.0.0-r0 < 6.1.1-r0 +6.1.1-r0 < 6.1.2-r0 +6.1.2-r0 < 6.1.3-r0 +6.1.3-r0 < 6.2.0-r0 +6.2.0-r0 < 6.3.0-r0 +6.3.0-r0 < 6.4.0-r0 +6.4.0-r0 < 6.5.0-r0 +6.5.0-r0 < 6.6.0-r0 +6.6.0-r0 < 6.6.1-r0 +6.6.1-r0 < 6.7.0-r0 +6.7.0-r0 < 6.7.1-r0 +6.7.1-r0 < 6.8.0-r0 +6.8.0-r0 < 6.8.1-r0 +6.8.1-r0 < 6.8.2-r0 +6.8.2-r0 < 6.9.0-r0 +6.9.0-r0 < 6.9.1-r0 +6.9.1-r0 < 6.9.2-r0 +6.9.2-r0 < 6.9.3-r0 +6.9.3-r0 < 6.9.4-r0 +6.9.4-r0 < 6.9.5-r0 +1.18-r0 < 1.21.1-r0 +1.21.1-r0 < 1.22-r0 +1.22-r0 < 1.24.1-r0 +1.24.2-r0 < 1.25.1-r0 +1.25.1-r0 < 1.25.2-r0 +1.25.2-r0 < 1.25.3-r0 +1.25.3-r0 < 1.25.5-r0 +1.25.5-r0 < 1.25.6-r0 +1.25.6-r0 < 1.25.6-r1 +1.25.6-r1 < 1.25.7-r0 +1.25.7-r0 < 1.25.7-r1 +1.25.7-r1 < 1.25.8-r0 +1.25.8-r0 < 1.25.8-r1 +1.25.8-r1 < 1.25.9-r0 +1.25.9-r0 < 1.25.10-r0 +1.25.10-r0 < 1.25.11-r0 +1.25.11-r0 < 1.26.0-r0 +1.26.1-r1 < 1.26.2-r0 +1.26.3-r0 < 1.26.4-r0 +1.26.4-r0 < 1.26.4-r1 +1.26.4-r1 < 1.26.5-r0 +1.26.5-r0 < 1.26.5-r1 +1.26.5-r1 < 1.26.6-r0 +1.26.6-r0 < 1.26.6-r1 +1.26.6-r1 < 1.26.7-r0 +1.26.7-r0 < 1.26.7-r1 +1.26.7-r1 < 1.26.8-r0 +1.26.8-r0 < 1.26.8-r1 +1.26.8-r1 < 1.26.9-r0 +1.26.9-r0 < 1.26.9-r1 +1.26.9-r1 < 1.26.10-r0 +1.26.10-r0 < 1.26.10-r1 +1.26.10-r1 < 1.26.11-r0 +1.26.11-r0 < 1.26.11-r1 +1.26.11-r1 < 1.26.12-r0 +1.26.12-r0 < 1.26.12-r1 +1.26.12-r1 < 1.26.13-r0 +1.26.13-r0 < 1.26.14-r0 +1.26.14-r0 < 1.26.15-r0 +1.26.15-r0 < 1.26.15-r1 +1.26.15-r1 < 1.26.15-r2 +1.26.15-r2 < 1.26.16-r2 +1.26.16-r2 < 1.26.17-r1 +1.1-r0 < 1.2-r0 +1.3-r0 < 1.4-r0 +1.4-r1 < 1.5-r0 +1.5-r1 < 1.6-r0 +1.6-r0 < 1.7-r0 +1.8-r2 < 1.8-r3 +1.8-r3 < 1.9a-r0 +1.9a-r0 < 2.0-r0 +2.0-r3 < 2.0-r4 +2.0-r4 < 2.1-r0 +2.3-r1 < 2.3-r2 +2.3-r2 < 2.3-r3 +2.3-r3 < 2.4-r0 +2.8-r1 < 2.9a-r0 +2.9a-r0 < 2.9a-r1 +2.9a-r1 < 3.0-r0 +3.0-r1 < 3.0a-r0 +3.0a-r0 < 3.0a-r1 +3.0a-r1 < 3.1-r0 +3.1-r1 < 3.1a-r0 +3.1a-r0 < 3.1a-r1 +3.1a-r1 < 3.1b-r0 +3.1b-r0 < 3.1b-r1 +1.1.3-r4 < 1.1.5-r0 +1.1.5-r0 < 1.1.6-r0 +1.1.6-r0 < 1.1.8-r0 +1.1.8-r1 < 1.1.8-r2 +1.1.8-r2 < 1.2.0-r0 +1.2.1-r1 < 1.3.0-r0 +1.3.1-r4 < 1.4.0-r0 +2.2.6-r0 < 2.2.8-r0 +2.2.8-r0 < 2.2.8-r1 +2.2.8-r1 < 2.3.4-r1 +2.3.4-r1 < 2.3.5-r0 +2.3.5-r0 < 3.1.0-r0 +3.1.0-r0 < 3.2.3-r0 +3.2.3-r0 < 3.3.2-r0 +3.3.2-r0 < 3.4.0-r0 +3.4.0-r0 < 3.4.4-r0 +3.4.4-r0 < 3.5.0-r0 +3.5.0-r0 < 3.6.0-r0 +3.6.0-r0 < 3.6.0-r1 +3.6.0-r1 < 3.6.4-r0 +3.6.4-r0 < 3.7.1-r0 +3.7.2-r1 < 3.8.0-r0 +3.8.0-r0 < 4.0.0-r0 +4.1.0-r1 < 4.1.1-r0 +4.1.1-r0 < 4.2.0-r0 +4.2.2-r0 < 4.2.3-r0 +4.2.4-r0 < 4.2.5-r0 +4.2.5-r0 < 4.3.2-r0 +4.3.4-r0 < 4.4.0-r0 +4.4.3-r0 < 4.5.0-r0 +4.5.2-r0 < 4.6.0-r0 +4.6.1-r0 < 4.6.2-r0 +4.6.2-r0 < 4.6.3-r0 +4.6.3-r1 < 4.6.4-r0 +4.6.4-r0 < 4.6.5-r0 +4.6.5-r0 < 4.7.1-r0 +4.7.1-r1 < 4.8.0-r0 +4.8.0-r0 < 4.9.0-r0 +4.9.0-r0 < 4.9.1-r0 +0.0.20131114-r0 < 0.5.5-r0 +0.5.5-r0 < 1.0.2-r0 +1.0.2-r1 < 1.2.0-r0 +1.2.1-r1 < 1.3.1-r0 +1.3.2-r1 < 1.4.1-r0 +3.2.10-r0 < 3.2.12-r0 +3.2.12-r0 < 3.2.13-r0 +3.2.13-r0 < 3.2.14-r0 +3.2.14-r0 < 3.2.15-r0 +3.2.15-r0 < 3.2.16-r0 +3.2.16-r0 < 3.2.16-r1 +3.2.16-r1 < 3.2.16-r2 +3.2.16-r2 < 4.0.0-r0 +4.0.0-r1 < 4.0.1-r0 +4.0.1-r1 < 4.0.2-r0 +4.1.3-r0 < 4.1.4-r0 +4.1.4-r0 < 4.1.6-r0 +4.1.7-r0 < 4.1.7-r1 +4.1.7-r1 < 4.1.8-r0 +4.1.9-r0 < 4.1.9-r1 +4.1.9-r1 < 4.1.10-r1 +4.1.10-r1 < 4.1.11-r0 +4.1.11-r0 < 4.1.13-r0 +4.1.13-r0 < 4.1.13-r1 +4.1.13-r1 < 4.1.14-r0 +4.1.15-r0 < 4.1.15-r1 +4.1.15-r1 < 4.1.15-r2 +4.1.15-r2 < 4.1.16-r0 +4.1.16-r0 < 4.1.16-r1 +4.1.16-r1 < 4.1.19-r0 +4.1.19-r0 < 4.1.20-r0 +4.1.20-r0 < 4.1.20-r1 +4.1.20-r1 < 4.1.21-r0 +4.1.21-r0 < 4.1.22-r0 +4.1.22-r0 < 4.1.23-r0 +4.1.23-r0 < 4.1.24-r0 +4.1.24-r0 < 4.1.24-r1 +4.1.24-r1 < 4.1.26-r0 +4.1.26-r0 < 4.1.27-r0 +4.1.27-r0 < 4.2.0-r0 +4.2.2-r1 < 4.2.3-r0 +4.2.3-r4 < 4.2.4-r0 +4.2.4-r1 < 4.3.0-r0 +4.3.0-r1 < 4.3.1-r0 +0.9-r0 < 0.12-r0 +0.12-r0 < 0.13-r0 +0.13-r0 < 0.18.0-r0 +0.18.1-r0 < 0.18.1-r1 +0.18.1-r1 < 0.18.1-r2 +0.18.1-r2 < 0.18.2-r0 +0.18.2-r0 < 0.18.4-r0 +0.18.4-r0 < 0.20.2-r0 +0.20.2-r0 < 0.22.1-r0 +0.22.1-r0 < 0.23.1-r0 +0.23.1-r0 < 0.23.1-r1 +0.23.1-r1 < 0.23.2-r0 +0.23.2-r1 < 0.23.2-r2 +0.23.2-r2 < 0.23.10-r0 +0.23.10-r0 < 0.23.10-r2 +0.23.10-r2 < 0.23.14-r0 +0.23.14-r0 < 0.23.14-r2 +0.23.14-r2 < 0.23.15-r0 +0.23.15-r0 < 0.23.15-r2 +0.23.15-r2 < 0.23.16.1-r0 +0.23.16.1-r0 < 0.23.16.1-r2 +0.23.16.1-r2 < 0.23.17-r0 +0.23.17-r0 < 0.23.17-r2 +0.23.17-r2 < 0.23.18.1-r0 +0.23.18.1-r0 < 0.23.20-r0 +0.23.20-r0 < 0.23.20-r1 +0.23.20-r1 < 0.23.20-r2 +0.23.20-r2 < 0.23.20-r3 +0.23.20-r3 < 0.23.20-r4 +0.23.20-r4 < 0.23.20-r5 +0.23.20-r5 < 0.23.21-r0 +0.23.21-r0 < 0.23.21-r5 +5.7.1p1-r0 < 5.7.1p1-r1 +5.7.1p1-r1 < 5.7.1p1-r2 +5.7.1p1-r2 < 5.7.2p1-r0 +5.7.2p1-r0 < 5.7.3p1-r0 +5.7.3p1-r0 < 5.7.3p1-r1 +5.7.3p1-r1 < 5.7.3p2-r0 +5.7.3p2-r0 < 5.7.3p2-r1 +5.7.3p2-r1 < 5.9.2p1-r0 +5.9.2p1-r0 < 5.9.2p1-r1 +5.9.2p1-r1 < 5.9.2p1-r2 +5.9.2p1-r2 < 5.9.2p1-r3 +5.9.2p1-r3 < 6.0.2p1-r0 +6.0.2p1-r0 < 6.0.2p1-r1 +6.0.2p1-r1 < 6.0.2p1-r2 +6.0.2p1-r2 < 6.0.2p1-r3 +6.0.2p1-r3 < 6.0.2p1-r4 +6.0.2p1-r4 < 6.0.2p1-r5 +6.0.2p1-r5 < 6.0.2p1-r6 +6.0.2p1-r6 < 6.0.2p1-r7 +6.0.2p1-r7 < 6.0.2p1-r8 +6.0.2p1-r8 < 6.0.3p1-r0 +6.0.3p1-r0 < 6.0.3p1-r1 +6.0.3p1-r1 < 6.0.3p1-r2 +6.0.3p1-r2 < 6.0.3p1-r3 +6.0.3p1-r3 < 6.0.3p1-r4 +6.0.3p1-r4 < 6.4.2p1-r0 +6.4.2p1-r0 < 6.4.2p1-r1 +6.4.2p1-r1 < 6.4.2p1-r2 +6.4.2p1-r2 < 6.6.1p1-r0 +6.6.1p1-r0 < 6.6.1p1-r1 +6.6.1p1-r1 < 6.6.1p1-r2 +6.6.1p1-r2 < 6.6.1p1-r3 +6.6.1p1-r3 < 6.6.2p1-r0 +6.6.2p1-r0 < 6.6.2p1-r2 +6.6.2p1-r2 < 6.6.3p1-r0 +6.6.3p1-r0 < 6.6.3p1-r1 +6.6.3p1-r1 < 6.6.4p1-r0 +6.6.4p1-r0 < 6.6.4p1-r1 +0.1.5-r0 < 0.1.5-r1 +0.1.5-r1 < 0.1.7-r0 +0.1.7-r0 < 0.1.8-r0 +0.1.8-r0 < 0.2.0-r0 +0.2.0-r1 < 0.2.1-r0 +0.2.1-r1 < 0.3.0-r0 +0.3.0-r0 < 0.3.0-r1 +0.3.0-r1 < 0.3.1-r0 +0.3.1-r1 < 0.3.3-r0 +0.3.3-r0 < 0.3.3-r1 +0.3.3-r1 < 0.4.0-r0 +2.12-r1 < 2.12-r2 +2.12-r2 < 2.12-r3 +2.12-r3 < 2.12-r4 +2.12-r4 < 2.12-r5 +2.12-r5 < 2.12-r6 +2.12-r6 < 2.12-r7 +2.12-r7 < 2.12-r8 +2.12-r8 < 2.13-r0 +2.13-r0 < 2.14-r0 +2.14-r1 < 2.14-r2 +2.14-r2 < 2.15-r0 +2.15-r0 < 2.15-r1 +2.15-r1 < 2.15-r2 +2.15-r2 < 2.15-r3 +2.15-r3 < 2.15-r4 +2.15-r4 < 2.15-r5 +2.15-r5 < 2.15-r6 +2.15-r6 < 2.15-r7 +2.15-r7 < 2.15-r8 +2.15-r8 < 2.15-r9 +2.15-r9 < 3.2.1-r0 +0.10.25-r0 < 0.10.27-r0 +0.10.27-r0 < 0.10.28-r0 +0.10.29-r0 < 1.4.2-r0 +1.4.2-r0 < 1.5.0-r0 +1.7.0-r0 < 1.7.3-r0 +1.9.1-r0 < 1.10.1-r0 +1.10.2-r0 < 1.11.0-r0 +1.11.0-r1 < 1.13.1-r0 +1.13.1-r0 < 1.14.0-r0 +1.15.0-r0 < 1.17.0-r0 +1.18.0-r0 < 1.19.1-r0 +1.19.1-r0 < 1.19.2-r0 +1.19.2-r0 < 1.20.2-r0 +1.20.2-r0 < 1.21.0-r0 +1.22.0-r0 < 1.23.2-r0 +1.23.2-r0 < 1.25.0-r0 +1.26.0-r0 < 1.28.0-r0 +1.28.0-r0 < 1.29.1-r0 +1.29.1-r0 < 1.30.1-r0 +1.30.1-r0 < 1.31.0-r0 +1.32.0-r0 < 1.33.1-r0 +1.33.1-r1 < 1.34.0-r0 +1.34.0-r1 < 1.34.1-r0 +1.34.1-r1 < 1.34.2-r0 +1.34.2-r0 < 1.34.2-r1 +1.34.2-r1 < 1.35.0-r0 +1.35.0-r1 < 1.36.0-r0 +1.36.0-r1 < 1.37.0-r0 +2.4.5-r3 < 2.4.5-r4 +2.4.5-r4 < 2.4.5-r5 +2.4.5-r5 < 2.4.5-r6 +2.4.5-r6 < 2.4.5-r7 +2.4.5-r7 < 2.4.5-r8 +2.4.5-r8 < 2.4.6-r0 +2.4.6-r0 < 2.4.6-r8 +2.4.6-r8 < 2.4.7-r0 +2.4.7-r1 < 2.4.7-r2 +2.4.7-r2 < 2.4.7-r3 +2.4.7-r3 < 2.4.7-r4 +2.4.7-r4 < 2.4.7-r5 +2.4.7-r5 < 2.4.7-r6 +2.4.7-r6 < 2.4.8-r0 +2.4.8-r2 < 2.4.9-r0 +2.4.9-r1 < 2.4.9-r2 +2.4.9-r2 < 2.4.9-r3 +2.4.9-r3 < 2.4.9-r4 +2.4.9-r4 < 2.4.9-r5 +1.0.7-r2 < 1.0.7-r3 +1.0.7-r3 < 1.0.7-r4 +1.0.7-r4 < 1.0.7-r5 +3.0.16-r1 < 3.0.17-r0 +3.0.17-r1 < 3.0.18-r0 +3.0.19-r1 < 3.0.21-r0 +3.0.21-r2 < 3.0.22-r0 +3.0.23-r1 < 3.0.24-r0 +3.0.24-r0 < 3.0.24-r1 +3.0.24-r1 < 3.0.24-r2 +3.0.24-r2 < 3.0.26-r2 +3.0.26-r2 < 3.0.28-r2 +3.0.28-r2 < 3.0.29-r2 +3.0.29-r2 < 3.0.30-r2 +3.0.30-r2 < 3.0.31-r2 +3.0.31-r2 < 3.0.32-r2 +13.5-r0 < 13.5-r1 +13.5-r1 < 13.5-r2 +13.6-r2 < 13.6-r3 +13.6-r3 < 13.7-r0 +13.7-r0 < 13.7-r1 +13.7-r1 < 13.8-r1 +13.8-r1 < 13.10-r1 +13.11-r1 < 13.12-r1 +13.12-r1 < 13.13-r1 +2.7.1-r0 < 3.1-r0 +3.1.1-r1 < 3.2-r0 +3.2-r0 < 3.3-r0 +3.3-r1 < 3.3-r2 +3.3-r2 < 3.4-r0 +3.4.1-r1 < 3.5.1-r0 +3.5.1-r1 < 3.6-r0 +3.6-r1 < 3.7-r0 +3.7-r0 < 3.7-r1 +3.7-r1 < 3.7.1-r0 +1.2.9-r0 < 1.2.9-r1 +1.2.9-r1 < 1.2.9-r2 +1.2.9-r2 < 1.2.9-r3 +1.2.9-r3 < 1.2.9-r4 +1.2.9-r4 < 1.2.9-r5 +1.2.9-r5 < 1.2.9-r6 +1.2.9-r6 < 1.2.9-r7 +1.2.9-r7 < 1.2.9-r8 +1.2.9-r8 < 1.2.10-r0 +1.2.10-r2 < 1.2.10-r3 +1.2.10-r3 < 1.2.10-r4 +1.2.10-r4 < 1.2.10-r5 +1.2.10-r5 < 1.2.10-r6 +1.2.10-r6 < 1.2.10-r7 +1.3.1-r1 < 1.4-r0 +1.4-r2 < 1.5-r0 +1.6-r0 < 2.0.2-r0 +2.0.2-r3 < 2.1.3-r0 +2.1.3-r1 < 2.1.3-r2 +2.1.3-r2 < 2.1.3-r3 +2.1.3-r3 < 2.2.0-r0 +2.2.0-r1 < 2.4.0-r0 +2.4.0-r0 < 2.4.2-r0 +2.4.2-r2 < 2.5.1-r0 +2.5.1-r0 < 2.5.1-r2 +2.5.2-r1 < 2.6.1-r0 +2.1.0-r0 < 2.3.0-r0 +2.3.0-r1 < 2.4.0-r0 +2.4.0-r0 < 2.5.3-r0 +2.5.3-r0 < 2.7.0-r0 +2.7.0-r0 < 2.8.1-r0 +2.8.1-r0 < 2.9.0-r0 +2.9.0-r0 < 3.3.0-r0 +3.3.0-r0 < 3.3.0-r1 +3.3.0-r1 < 3.3.0-r2 +3.3.0-r2 < 3.4.2-r0 +3.4.2-r1 < 4.0.0-r0 +4.0.0-r1 < 4.1.0-r0 +4.1.0-r0 < 4.2.1-r0 +4.2.1-r1 < 4.3.0-r0 +4.3.0-r0 < 5.2.0-r0 +5.2.0-r0 < 5.3.0-r0 +5.3.0-r0 < 5.4.1-r0 +5.4.1-r1 < 6.0.0-r0 +6.0.0-r2 < 6.0.0-r3 +2014.04-r0 < 2014.04-r1 +2014.04-r1 < 2014.04-r2 +2014.04-r2 < 2015.01-r0 +2015.01-r0 < 2015.01-r1 +2015.01-r1 < 2015.04-r0 +2015.04-r0 < 2015.04-r1 +2015.04-r1 < 2016.07-r0 +2016.07-r0 < 2016.07-r1 +2016.07-r1 < 2016.07-r2 +2016.07-r2 < 2017.01-r0 +2017.01-r0 < 2017.01-r1 +2017.01-r1 < 2017.01-r2 +2017.01-r2 < 2018.05-r0 +2018.05-r0 < 2018.05-r1 +2018.05-r1 < 2018.05-r2 +2018.05-r2 < 2018.05-r3 +2018.05-r3 < 2018.05-r4 +2018.05-r4 < 2018.05-r5 +2018.05-r5 < 2019.01-r0 +2019.01-r0 < 2019.04-r0 +2019.04-r0 < 2019.04-r1 +2019.04-r1 < 2019.04-r2 +2019.04-r2 < 2019.07-r0 +2019.07-r0 < 2019.10-r0 +2019.10-r0 < 2020.01-r0 +2020.01-r0 < 2020.04-r0 +2020.04-r0 < 2020.07-r0 +2020.07-r0 < 2020.10-r0 +2020.10-r0 < 2020.10-r1 +2020.10-r1 < 2021.01-r0 +2021.01-r0 < 2021.01-r2 +2021.01-r2 < 2021.01-r3 +0.9.25-r0 < 0.9.25-r1 +0.9.25-r1 < 0.9.25-r2 +0.9.25-r2 < 0.9.26-r0 +0.9.26-r0 < 0.9.27-r0 +0.9.27-r0 < 0.9.27-r1 +0.9.27-r1 < 0.9.29-r0 +0.9.29-r0 < 0.9.30-r0 +0.9.30-r0 < 0.9.31-r0 +0.9.31-r0 < 0.9.32-r0 +0.9.32-r0 < 0.9.32-r2 +0.9.32-r2 < 0.9.33-r0 +0.9.33-r0 < 0.9.33-r1 +0.9.33-r1 < 0.9.35-r1 +20060725-r0 < 20060725-r1 +20060725-r1 < 20080314-r2 +20080314-r2 < 20080314-r3 +20080314-r3 < 20111115-r0 +20111115-r0 < 20111115-r1 +20111115-r1 < 20111115-r2 +20111115-r2 < 20111115-r3 +20111115-r3 < 20111115-r4 +20111115-r4 < 20190117-r0 +20190117-r0 < 20190117-r1 +20190117-r1 < 20190117-r4 +0.6-r1 < 0.7-r0 +0.7-r0 < 1.0-r0 +1.0-r4 < 1.1-r0 +0.15-r0 < 1.0.0-r0 +1.0.2-r0 < 1.1.0-r0 +1.1.1-r0 < 1.2.1-r0 +1.3.0-r4 < 1.3.0-r5 +1.3.0-r5 < 1.3.0-r6 +1.3.0-r6 < 1.3.2-r0 +1.3.2-r2 < 1.3.2-r3 +1.3.2-r3 < 1.3.3-r0 +1.3.3-r1 < 1.3.3-r2 +1.3.3-r2 < 1.3.3-r3 +1.3.3-r3 < 1.3.3-r4 +1.3.3-r4 < 1.3.3-r5 +1.3.3-r5 < 1.3.3-r6 +1.3.3-r6 < 1.3.3-r7 +1.3.3-r7 < 1.4.0-r0 +0.8.4-r1 < 0.8.4-r2 +0.8.4-r2 < 0.8.6-r0 +0.8.6-r0 < 0.8.7.1-r0 +0.8.7.1-r0 < 0.8.8-r0 +0.8.10-r0 < 0.8.11-r0 +0.8.11-r0 < 0.8.12-r0 +0.8.12-r0 < 0.9.0-r0 +0.9.1-r0 < 0.9.3-r0 +0.9.4-r0 < 0.10.1-r0 +0.10.1-r0 < 0.10.3.1-r0 +0.10.3.1-r0 < 0.10.3.1-r1 +0.10.3.1-r1 < 0.10.3.1-r2 +0.10.3.1-r2 < 0.10.4-r0 +0.10.4-r0 < 0.10.4-r1 +0.10.4-r1 < 0.10.4-r2 +0.10.4-r2 < 0.11.1-r0 +0.11.1-r1 < 0.11.1-r2 +0.11.1-r2 < 0.11.1-r3 +0.11.1-r3 < 0.11.1-r4 +0.11.1-r4 < 0.11.2-r0 +1.8.1-r3 < 1.10.4-r0 +1.10.4-r0 < 1.12.0-r0 +1.12.1-r2 < 1.12.2-r0 +1.14.2-r0 < 1.14.4-r0 +1.14.4-r0 < 1.16.0-r0 +1.16.2-r2 < 1.18.1-r0 +1.18.1-r0 < 1.18.1-r2 +1.18.1-r2 < 1.18.2-r0 +1.18.2-r0 < 1.18.2-r2 +1.18.3-r0 < 1.18.3-r2 +0.6.1-r2 < 0.8.0-r0 +0.8.0-r1 < 0.9.2-r0 +0.9.2-r3 < 0.9.2-r4 +0.9.2-r4 < 0.9.2-r5 +0.9.2-r5 < 0.9.9-r5 +0.9.9-r5 < 0.9.10-r5 +1.3.3-r0 < 1.3.5-r0 +1.3.7-r0 < 1.3.8-r0 +1.3.8-r0 < 1.3.9-r0 +1.3.9-r0 < 1.4.2-r0 +1.4.2-r2 < 1.4.2-r3 +1.4.2-r3 < 1.4.2-r4 +1.4.2-r4 < 1.4.4-r0 +1.4.5-r3 < 1.4.6-r0 +1.4.8-r1 < 1.5.0-r0 +1.5.2-r1 < 1.6.3-r0 +1.6.3-r1 < 1.6.5-r0 +9.11-r0 < 9.15-r0 +9.15-r0 < 9.18-r0 +9.18-r1 < 9.18-r2 +9.18-r2 < 9.18-r3 +9.18-r3 < 9.19-r0 +9.19-r0 < 9.20-r0 +9.20-r1 < 9.21-r0 +9.21-r3 < 9.21-r4 +9.21-r4 < 9.22-r4 +2.70-r0 < 2.75-r0 +2.75-r0 < 2.76-r0 +2.76-r1 < 2.86-r0 +2.86-r0 < 2.88-r0 +2.88-r1 < 2.88-r2 +2.88-r2 < 2.93-r0 +2.93-r0 < 2.98-r0 +2.98-r0 < 2.98-r1 +2.98-r1 < 3.01-r0 +3.01-r0 < 3.01-r1 +3.01-r1 < 3.02-r0 +3.02-r0 < 3.02-r1 +3.02-r1 < 3.03-r0 +3.04-r0 < 3.05-r0 +3.05-r0 < 3.06-r0 +3.06-r0 < 3.07-r0 +3.07-r0 < 3.07-r1 +3.07-r1 < 3.08-r0 +3.08-r0 < 3.09-r0 +3.09-r0 < 3.10-r0 +3.11-r0 < 3.11-r1 +2.14.2-r0 < 2.16-r0 +2.16-r0 < 2.16-r1 +2.16-r1 < 2.16-r2 +2.16-r2 < 2.16.2-r0 +2.16.2-r0 < 2.17-r0 +2.17-r0 < 2.17.1-r0 +2.17.1-r1 < 2.17.2-r0 +2.17.2-r0 < 2.18-r0 +2.18-r0 < 2.18-r1 +2.18-r1 < 2.18-r2 +2.18-r2 < 2.19.1-r0 +2.19.1-r1 < 2.19.1-r2 +2.19.1-r2 < 2.20-r0 +2.20-r0 < 2.20-r1 +2.20-r1 < 2.21-r0 +2.21-r0 < 2.21-r1 +2.21-r1 < 2.21.1-r0 +2.21.1-r0 < 2.21.1-r1 +2.21.1-r1 < 2.21.2-r0 +2.21.2-r0 < 2.21.2-r1 +2.21.2-r1 < 2.22.1-r0 +2.22.1-r1 < 2.22.2-r0 +2.22.2-r0 < 2.22.2-r1 +2.22.2-r1 < 2.23.1-r0 +2.23.1-r0 < 2.23.1-r1 +2.23.1-r1 < 2.23.2-r0 +2.23.2-r5 < 2.24.2-r0 +2.24.2-r1 < 2.24.2-r2 +2.24.2-r2 < 2.24.2-r3 +2.24.2-r3 < 2.24.2-r4 +2.24.2-r4 < 2.25.2-r0 +2.25.2-r0 < 2.25.2-r1 +2.25.2-r1 < 2.25.2-r2 +2.25.2-r2 < 2.26.1-r0 +2.26.2-r1 < 2.27-r0 +2.27-r1 < 2.27.1-r0 +2.27.1-r0 < 2.27.1-r1 +2.27.1-r1 < 2.28-r0 +2.28-r3 < 2.28-r4 +2.28-r4 < 2.28.1-r0 +2.28.2-r1 < 2.28.2-r2 +2.28.2-r2 < 2.30.1-r0 +2.30.2-r1 < 2.31-r0 +2.31-r0 < 2.31-r1 +2.31-r1 < 2.32-r0 +2.32-r0 < 2.32-r1 +2.32-r1 < 2.33-r0 +2.33-r0 < 2.33-r1 +2.33-r1 < 2.33.2-r0 +2.33.2-r0 < 2.33.2-r1 +2.33.2-r1 < 2.34-r0 +2.34-r1 < 2.35-r0 +2.35-r0 < 2.35-r1 +2.35-r1 < 2.35.1-r0 +2.35.1-r2 < 2.35.1-r3 +2.35.1-r3 < 2.35.1-r4 +2.35.1-r4 < 2.35.2-r0 +2.35.2-r2 < 2.36-r0 +2.36-r0 < 2.36-r1 +2.36-r1 < 2.36-r2 +2.36-r2 < 2.36.1-r0 +2.36.1-r1 < 2.36.2-r0 +2.36.2-r0 < 2.36.2-r1 +2.36.2-r1 < 2.36.2-r2 +2.36.2-r2 < 2.37-r0 +2.37-r4 < 2.37.1-r0 +2.37.1-r1 < 2.37.2-r0 +2.37.2-r0 < 2.37.2-r1 +2.37.2-r1 < 2.37.2-r2 +2.37.2-r2 < 2.37.2-r3 +2.37.2-r3 < 2.37.2-r4 +2.37.2-r4 < 2.37.2-r5 +2.37.2-r5 < 2.37.2-r6 +2.37.2-r6 < 2.37.2-r7 +2.37.2-r7 < 2.37.3-r0 +2.8.7-r2 < 2.8.7_p1-r0 +2.8.7_p1-r0 < 2.8.8-r0 +2.8.8-r0 < 2.8.8_p2-r0 +2.8.8_p2-r0 < 2.8.9_p1-r0 +1.0.4-r1 < 1.0.4-r2 +1.0.4-r2 < 1.0.4-r3 +1.0.4-r3 < 1.0.6-r0 +1.0.6-r6 < 1.0.6-r7 +1.0.6-r7 < 1.0.6-r8 +1.0.6-r8 < 1.0.6-r9 +1.0.6-r9 < 1.0.6-r10 +1.0.6-r10 < 1.0.6-r11 +1.0.6-r11 < 1.0.6-r12 +1.0.6-r12 < 1.0.6-r13 +1.0.6-r13 < 1.0.6-r14 +1.0.6-r14 < 1.0.6-r15 +1.0.6-r15 < 1.0.6-r16 +1.0.6-r16 < 1.0.6-r17 +1.0.6-r17 < 1.0.7-r0 +1.0.7-r2 < 1.0.7_p20110323-r0 +1.0.7_p20110323-r0 < 1.0.7_p20110323-r1 +1.0.7_p20110323-r1 < 1.0.7_p20110527-r0 +1.0.7_p20110527-r0 < 1.0.7_p20110602-r0 +1.0.7_p20110602-r0 < 1.0.7_p20110602-r1 +1.0.7_p20110602-r1 < 1.0.7_p20110602-r2 +1.0.7_p20110602-r2 < 1.0.7_p20110602-r3 +1.0.7_p20110602-r3 < 1.0.7_p20110602-r4 +1.0.7_p20110602-r4 < 1.0.7_p20110602-r5 +1.0.7_p20110602-r5 < 1.0.7_p20110602-r6 +1.0.7_p20110602-r6 < 1.0.7_p20110602-r7 +1.0.7_p20110602-r7 < 1.0.7_p20120309-r1 +1.0.7_p20120309-r1 < 1.2.0-r0 +1.2.0-r2 < 1.2.0-r3 +1.2.0-r3 < 1.2.5.3-r0 +1.2.5.3-r0 < 1.2.5.3-r1 +1.2.5.3-r1 < 1.2.5.3-r2 +1.2.5.3-r2 < 1.2.5.3-r3 +1.2.5.3-r3 < 1.2.10-r0 +1.4.0-r2 < 1.4.6-r0 +1.4.6-r1 < 1.4.7-r0 +1.4.7-r0 < 1.4.7-r1 +1.4.7-r1 < 1.4.13-r0 +1.4.13-r0 < 1.4.18-r0 +1.4.18-r4 < 1.4.18-r5 +1.4.18-r5 < 1.4.18-r6 +1.4.18-r6 < 1.4.19-r0 +1.4.20-r2 < 1.4.20-r3 +1.4.20-r3 < 1.4.20-r4 +1.4.20-r4 < 1.4.20-r5 +1.4.20-r5 < 1.6.2-r0 +1.6.2-r3 < 1.6.2-r4 +1.6.2-r4 < 1.6.2-r5 +1.6.2-r5 < 1.6.6-r0 +1.6.7-r2 < 1.6.9-r0 +1.6.9-r0 < 1.6.11-r0 +1.6.11-r0 < 1.6.13-r0 +1.6.15-r0 < 1.6.17-r0 +1.6.17-r0 < 1.6.19-r0 +1.6.19-r0 < 1.6.19-r1 +1.6.19-r1 < 1.6.20-r0 +1.6.20-r0 < 1.8.2-r0 +1.8.2-r1 < 1.8.5-r0 +1.8.5-r1 < 1.8.7-r0 +1.8.7-r1 < 1.10.2-r0 +1.10.3-r3 < 1.10.5-r0 +1.10.5-r1 < 1.10.5-r2 +1.10.5-r2 < 1.10.6-r0 +1.10.6-r0 < 1.10.6-r1 +1.10.6-r1 < 1.10.6-r2 +2.8.3.2-r0 < 2.8.3.2-r1 +2.8.3.2-r1 < 2.8.4-r0 +2.8.4-r1 < 2.8.5.1-r0 +2.8.5.1-r0 < 2.8.5.3-r0 +2.8.5.3-r0 < 2.8.6-r0 +2.8.6-r0 < 2.8.6.1-r0 +2.8.6.1-r0 < 2.9.0.4-r0 +2.9.0.4-r0 < 2.9.0.5-r0 +2.9.0.5-r0 < 2.9.1-r0 +2.9.1-r0 < 2.9.1.1-r0 +2.9.1.1-r0 < 2.9.1.2-r0 +2.9.1.2-r0 < 2.9.2-r0 +2.9.2-r0 < 2.9.2.1-r0 +2.9.2.1-r0 < 2.9.2.1-r1 +2.9.2.1-r1 < 2.9.2.2-r0 +2.9.2.2-r0 < 2.9.2.3-r0 +2.9.2.3-r0 < 2.9.3-r0 +2.9.3-r3 < 2.9.3-r4 +2.9.3-r4 < 2.9.3.1-r0 +2.9.3.1-r0 < 2.9.4-r0 +2.9.4-r0 < 2.9.4.1-r0 +2.9.4.1-r0 < 2.9.4.5-r0 +2.9.4.5-r0 < 2.9.4.6-r0 +2.9.4.6-r0 < 2.9.5.3-r0 +2.9.5.3-r0 < 2.9.5.3-r1 +2.9.5.3-r1 < 2.9.5.3-r2 +2.9.5.3-r2 < 2.9.5.5-r0 +2.9.5.5-r0 < 2.9.5.6-r0 +2.9.5.6-r0 < 2.9.5.6-r1 +2.9.5.6-r1 < 2.9.6.1-r0 +2.9.6.1-r0 < 2.9.6.1-r1 +2.9.6.1-r1 < 2.9.7.0-r0 +2.9.7.0-r0 < 2.9.7.2-r0 +2.9.7.2-r0 < 2.9.7.2-r1 +2.9.7.2-r1 < 2.9.7.3-r0 +2.9.7.3-r0 < 2.9.7.5-r0 +2.9.7.5-r0 < 2.9.7.6-r0 +2.9.7.6-r0 < 2.9.8.0-r0 +2.9.8.0-r0 < 2.9.8.2-r0 +2.9.8.2-r0 < 2.9.8.2-r1 +2.9.8.2-r1 < 2.9.8.2-r2 +2.9.8.2-r2 < 2.9.8.3-r0 +2.9.8.3-r0 < 2.9.9.0-r0 +2.9.9.0-r0 < 2.9.11-r0 +2.9.11-r0 < 2.9.11.1-r0 +2.9.11.1-r0 < 2.9.12-r0 +2.9.12-r0 < 2.9.13-r0 +2.9.13-r3 < 2.9.14.1-r3 +2.9.14.1-r3 < 2.9.15.1-r3 +2.9.15.1-r3 < 2.9.17-r3 +4.0-r0 < 4.0-r1 +4.0-r1 < 4.1-r0 +4.1-r0 < 4.2-r0 +4.2-r1 < 4.2-r2 +4.2-r2 < 4.3-r0 +4.3-r0 < 4.3-r1 +4.3-r1 < 4.3-r2 +4.3-r2 < 4.3-r3 +4.3-r3 < 4.3-r4 +4.3-r4 < 4.3-r5 +4.3-r5 < 4.3-r6 +4.3-r6 < 4.4-r0 +4.4-r1 < 4.4-r6 +4.4-r6 < 4.5-r0 +1.12.1-r0 < 1.12.4-r0 +1.12.5-r0 < 1.13.1-r0 +1.13.4-r0 < 1.13.7-r0 +1.13.7-r0 < 1.14.0-r0 +1.14.1-r0 < 1.14.3-r0 +1.14.4-r1 < 1.14.5-r0 +1.14.5-r0 < 1.14.6-r0 +1.14.6-r0 < 1.15.0-r0 +1.15.2-r0 < 1.15.3-r0 +1.16.3-r1 < 1.16.4-r0 +1.16.5-r0 < 1.17.1-r0 +1.17.1-r0 < 2.0.1-r0 +2.0.2-r1 < 2.1.2-r0 +2.2.2-r1 < 2.2.15-r1 +2.2.24-r1 < 2.2.26-r1 +2.2.27-r1 < 2.2.29-r1 +2.2.29-r1 < 2.2.30-r1 +2.2.30-r1 < 2.2.31-r1 +5.0.1-r1 < 5.0.1-r2 +5.0.1-r2 < 5.0.1-r3 +5.0.1-r3 < 5.1.1-r0 +5.1.3-r0 < 6.0.0a-r0 +6.0.0a-r0 < 6.0.0a-r1 +6.0.0a-r1 < 6.1.0-r0 +6.1.0-r0 < 6.1.1-r0 +6.1.2-r0 < 6.1.2-r1 +6.1.2-r1 < 6.2.0-r0 +1.10.0-r1 < 1.16.0-r0 +1.16.0-r5 < 1.17.0-r0 +1.17.0-r3 < 1.18.0-r1 +1.18.0-r1 < 1.19.0-r0 +1.19.0-r0 < 1.20.0-r0 +1.21.0-r0 < 1.21.0-r1 +1.21.0-r1 < 1.22.1-r0 +1.22.1-r0 < 1.23.0-r0 +1.23.0-r1 < 1.24.0-r0 +1.24.1-r0 < 1.25.0-r0 +1.26.0-r0 < 1.26.0-r1 +1.26.0-r1 < 1.26.2-r0 +1.26.2-r0 < 1.27.0-r0 +1.27.0-r0 < 1.27.2-r0 +1.27.2-r0 < 1.28.0-r0 +1.28.0-r0 < 1.29.0-r0 +1.30.0-r1 < 1.31.1-r1 +1.31.1-r2 < 1.32.0-r0 +1.32.0-r0 < 1.33.0-r0 +1.33.0-r0 < 1.34.2-r0 +1.35.0-r0 < 1.36.0-r0 +1.37.0-r0 < 1.38.0-r0 +1.38.0-r1 < 1.38.0-r2 +1.38.0-r2 < 1.39.0-r0 +1.39.0-r0 < 1.40.0-r0 +1.40.0-r0 < 1.40.0-r1 +1.40.0-r1 < 1.41.0-r0 +1.41.0-r0 < 1.41.0-r1 +1.41.0-r1 < 1.41.1-r0 +1.41.1-r0 < 1.42.0-r0 +1.42.0-r1 < 1.42.0-r2 +1.42.0-r2 < 1.43.0-r0 +1.43.0-r0 < 1.43.1-r0 +1.43.1-r0 < 1.43.1-r1 +1.43.1-r1 < 1.44.0-r0 +1.44.0-r0 < 1.44.1-r0 +1.44.1-r0 < 1.45.1-r0 +1.45.1-r0 < 1.45.2-r0 +1.45.2-r0 < 1.46.0-r0 +1.46.0-r0 < 1.46.0-r1 +1.46.0-r1 < 1.46.0-r2 +1.47.0-r0 < 1.47.0-r1 +1.47.0-r1 < 1.47.0-r2 +1.47.0-r2 < 1.48.0-r0 +1.48.0-r0 < 1.49.0-r0 +1.49.0-r0 < 1.50.0-r0 +1.51.0-r1 < 1.51.0-r2 +1.51.0-r2 < 1.52.0-r0 +1.52.0-r0 < 1.52.1-r0 +1.52.1-r0 < 1.52.1-r1 +1.52.1-r1 < 1.53.0-r0 +1.53.0-r0 < 1.54.0-r0 +1.54.0-r0 < 1.55.0-r0 +1.55.0-r0 < 1.55.0-r1 +1.55.0-r1 < 1.55.0-r2 +1.55.0-r2 < 1.55.0-r3 +0.2.1-r3 < 0.2.1-r4 +0.2.1-r4 < 0.2.2-r0 +0.2.2-r0 < 0.2.2-r1 +0.2.2-r1 < 0.2.2-r2 +0.2.2-r2 < 0.2.2-r3 +0.2.2-r3 < 0.2.3-r0 +0.2.3-r1 < 0.2.4-r0 +0.2.4-r0 < 0.2.4-r1 +0.2.4-r1 < 0.2.4-r2 +0.2.4-r2 < 0.2.4-r3 +0.2.4-r3 < 0.2.5-r0 +0.2.5-r0 < 0.2.5-r1 +0.2.5-r1 < 0.2.5-r2 +0.2.5-r2 < 0.2.5-r3 +0.2.5-r3 < 0.3.0-r0 +0.3.1-r1 < 0.3.2-r0 +0.3.2-r0 < 0.3.2-r1 +0.3.2-r1 < 0.3.2-r2 +0.3.2-r2 < 1.0.1-r0 +1.0.1-r2 < 1.0.3-r0 +1.0.3-r0 < 1.1.4-r0 +1.1.4-r0 < 1.2.5-r0 +1.2.5-r2 < 1.2.5-r3 +1.2.5-r3 < 1.2.6-r0 +1.2.6-r0 < 1.2.6-r3 +1.2.6-r3 < 1.3.1-r0 +1.3.1-r0 < 1.3.1-r3 +1.3.1-r3 < 1.3.2-r0 +1.3-r0 < 2.1.1-r0 +2.1.1-r0 < 2.3.4-r0 +2.3.4-r2 < 2.4.0-r0 +2.4.0-r0 < 2.5.0-r0 +2.5.0-r0 < 2.5.1-r0 +2.5.1-r0 < 2.5.3-r0 +2.6.0-r1 < 2.7.0-r0 +3.7.8-r2 < 3.7.8-r3 +3.7.8-r3 < 3.7.9-r0 +3.7.9-r0 < 3.7.9-r1 +3.7.9-r1 < 3.7.9-r2 +3.7.9-r2 < 3.8.0-r0 +3.8.0-r0 < 3.8.1-r0 +3.8.1-r0 < 3.8.2-r0 +3.8.2-r1 < 3.8.3-r1 +3.8.3-r1 < 3.8.4-r1 +3.8.4-r1 < 3.8.5-r0 +3.8.5-r0 < 3.8.6-r0 +3.8.6-r0 < 3.8.7-r0 +3.8.7-r0 < 3.8.8-r0 +3.8.8-r0 < 3.8.9-r0 +3.8.9-r0 < 3.9.1-r0 +3.9.1-r1 < 3.9.1-r2 +3.9.1-r2 < 3.9.1-r3 +3.9.1-r3 < 3.9.2-r0 +3.9.2-r0 < 3.9.2-r3 +3.9.2-r3 < 3.10.0-r0 +3.10.0-r0 < 3.10.0-r3 +3.10.0-r3 < 3.11.0-r0 +3.11.0-r0 < 3.11.0-r3 +3.11.0-r3 < 3.12.2-r0 +3.12.2-r0 < 3.12.2-r3 +3.12.2-r3 < 3.12.3-r0 +3.12.3-r0 < 3.12.3-r3 +3.12.3-r3 < 3.13.0-r0 +3.13.0-r0 < 3.13.0-r3 +3.13.0-r3 < 3.14.0-r0 +3.14.0-r0 < 3.14.0-r3 +3.14.0-r3 < 3.15.0-r0 +3.15.0-r0 < 3.15.0-r3 +3.15.0-r3 < 3.15.1-r0 +3.15.1-r0 < 3.15.1-r3 +3.15.1-r3 < 3.16.0-r0 +3.16.0-r0 < 3.16.0-r3 +3.16.0-r3 < 3.17.0-r0 +3.17.0-r0 < 3.17.0-r3 +3.17.0-r3 < 3.18.0-r0 +3.18.0-r0 < 3.18.0-r3 +3.18.0-r3 < 3.18.1-r0 +3.18.1-r0 < 3.18.1-r1 +3.18.1-r1 < 3.19.0-r0 +3.19.0-r0 < 3.19.0-r1 +1.3.12-r0 < 1.3.12-r1 +1.3.12-r1 < 1.3.12-r2 +1.3.12-r2 < 1.3.13-r0 +1.3.13-r0 < 1.4-r0 +1.6-r1 < 1.7-r0 +1.8-r1 < 1.9-r0 +1.9-r0 < 1.10-r0 +1.10-r1 < 1.11-r1 +5.0.1-r0 < 5.0.2-r0 +5.0.3-r0 < 5.0.3-r1 +5.0.3-r1 < 5.0.4-r0 +5.0.7-r0 < 5.2.0-r0 +5.2.1-r0 < 5.2.2-r0 +5.2.2-r0 < 5.2.2-r1 +5.2.2-r1 < 5.2.3-r0 +5.2.3-r0 < 5.2.3-r1 +5.2.3-r1 < 5.2.4-r0 +5.2.4-r0 < 5.2.4-r1 +5.2.4-r1 < 5.2.5-r0 +3.3.1-r3 < 3.3.2-r0 +3.3.3-r1 < 3.3.3-r2 +3.3.3-r2 < 3.3.3p1-r0 +3.3.3p1-r0 < 3.3.3p1-r1 +3.3.3p1-r1 < 3.3.3p1-r2 +3.3.3p1-r2 < 3.3.3p1-r4 +3.3.3p1-r4 < 3.3.4-r0 +3.3.4-r0 < 3.3.4-r1 +3.3.4-r1 < 3.3.4-r2 +3.3.4-r2 < 3.4.2-r0 +3.4.2-r0 < 3.4.2-r2 +10.21-r0 < 10.22-r0 +10.22-r0 < 10.23-r0 +10.23-r0 < 10.23-r1 +10.23-r1 < 10.30-r0 +10.30-r0 < 10.31-r0 +10.31-r0 < 10.32-r0 +10.32-r0 < 10.32-r1 +10.32-r1 < 10.32-r2 +10.32-r2 < 10.33-r0 +10.33-r0 < 10.34-r0 +10.34-r0 < 10.34-r1 +10.34-r1 < 10.35-r0 +10.35-r0 < 10.35-r1 +10.35-r1 < 10.36-r0 +10.36-r0 < 10.37-r0 +10.37-r0 < 10.38-r0 +10.38-r0 < 10.38-r1 +10.38-r1 < 10.39-r0 +10.39-r0 < 10.39-r1 +10.39-r1 < 10.40-r0 +10.40-r0 < 10.40-r1 +1.15.5.6-r0 < 1.15.5.6-r1 +1.15.5.6-r1 < 1.15.5.6-r2 +1.15.5.6-r2 < 1.15.8.10-r0 +1.15.8.10-r0 < 1.16.0.3-r0 +1.16.0.3-r0 < 1.16.8-r0 +1.16.8-r0 < 1.16.10-r0 +1.16.10-r0 < 1.16.10-r1 +1.16.10-r1 < 1.16.10-r2 +1.16.10-r2 < 1.16.12-r0 +1.16.12-r0 < 1.16.14-r0 +1.16.14-r0 < 1.16.15-r1 +1.16.15-r1 < 1.18.3-r0 +1.18.4-r1 < 1.18.7-r0 +1.18.7-r0 < 1.18.7-r1 +1.18.7-r1 < 1.18.9-r0 +1.18.9-r0 < 1.18.9-r1 +1.18.9-r1 < 1.18.10-r0 +1.18.10-r0 < 1.18.23-r0 +1.18.23-r0 < 1.18.23-r1 +1.18.23-r1 < 1.18.23-r2 +1.18.23-r2 < 1.18.24-r0 +1.18.24-r0 < 1.19.2-r0 +1.19.2-r1 < 1.19.5-r0 +1.19.5-r0 < 1.19.6-r0 +1.19.6-r0 < 1.19.7-r0 +1.19.7-r0 < 1.19.7-r1 +1.19.7-r1 < 1.20.0-r0 +1.20.2-r0 < 1.20.3-r0 +1.20.3-r0 < 1.20.4-r0 +1.20.4-r0 < 1.20.5-r0 +1.20.5-r1 < 1.20.5-r2 +1.20.5-r2 < 1.20.5-r3 +1.20.5-r3 < 1.20.6-r0 +1.20.6-r0 < 1.20.6-r3 +1.20.6-r3 < 1.20.7.1-r0 +1.20.7.1-r0 < 1.20.7.1-r3 +1.20.7.1-r3 < 1.20.9-r0 +1.20.9-r0 < 1.20.9-r3 +1.20.9-r3 < 1.21.1-r0 +1.21.1-r1 < 1.21.2-r0 +1.21.2-r0 < 1.21.2-r1 +1.21.2-r1 < 1.21.3-r0 +1.21.3-r0 < 1.21.3-r1 +1.21.3-r1 < 1.21.6-r0 +1.21.6-r0 < 1.21.6-r1 +1.21.6-r1 < 1.21.7-r0 +1.21.7-r0 < 1.21.7-r1 +2.0.0-r0 < 2.1.0-r0 +2.3.1-r0 < 2.5.0-r0 +2.6.0-r3 < 2.7.0-r0 +2.7.1-r0 < 3.0.2-r0 +3.0.2-r5 < 3.1.0-r0 +3.1.2-r4 < 3.2.0-r0 +3.2.0-r0 < 3.2.1-r0 +3.2.2-r1 < 3.3.0-r0 +1.4.20-r2 < 1.4.22-r0 +1.4.22-r0 < 1.4.23-r0 +1.4.23-r0 < 1.4.23-r1 +1.4.23-r1 < 1.4.23-r2 +1.4.23-r2 < 1.4.24-r0 +1.4.24-r0 < 1.4.25-r0 +1.4.25-r2 < 1.4.26-r0 +1.4.26-r0 < 1.4.26-r1 +1.4.26-r1 < 1.4.26-r2 +1.4.26-r2 < 1.4.26-r3 +1.4.26-r3 < 1.4.26-r4 +1.4.26-r4 < 1.4.26-r5 +1.4.26-r5 < 1.4.27-r0 +1.4.27-r0 < 1.4.28-r0 +1.4.28-r0 < 1.4.28-r3 +1.4.28-r3 < 1.4.28-r4 +1.4.28-r4 < 1.4.28-r5 +1.4.28-r5 < 1.4.28-r6 +1.4.28-r6 < 1.4.28-r7 +1.4.28-r7 < 1.4.29-r0 +1.4.29-r0 < 1.4.29-r1 +1.4.29-r1 < 1.4.29-r2 +1.4.29-r2 < 1.4.30-r0 +1.4.30-r0 < 1.4.30-r1 +1.4.30-r1 < 1.4.30-r2 +1.4.30-r2 < 1.4.30-r3 +1.4.30-r3 < 1.4.31-r0 +1.4.31-r0 < 1.4.32-r0 +1.4.32-r0 < 1.4.32-r1 +1.4.32-r1 < 1.4.33-r1 +1.4.33-r1 < 1.4.33-r2 +1.4.33-r2 < 1.4.33-r3 +1.4.33-r3 < 1.4.34-r0 +1.4.34-r1 < 1.4.35-r0 +1.4.35-r0 < 1.4.35-r1 +1.4.35-r1 < 1.4.35-r2 +1.4.35-r2 < 1.4.35-r3 +1.4.35-r3 < 1.4.35-r4 +1.4.35-r4 < 1.4.36-r0 +1.4.36-r0 < 1.4.37-r0 +1.4.37-r0 < 1.4.38-r0 +1.4.38-r0 < 1.4.39-r0 +1.4.39-r0 < 1.4.39-r1 +1.4.39-r1 < 1.4.39-r2 +1.4.39-r2 < 1.4.39-r3 +1.4.39-r3 < 1.4.39-r4 +1.4.39-r4 < 1.4.40-r0 +1.4.40-r0 < 1.4.40-r1 +1.4.40-r1 < 1.4.42-r0 +1.4.42-r0 < 1.4.43-r0 +1.4.43-r0 < 1.4.44-r0 +1.4.44-r0 < 1.4.45-r0 +1.4.45-r0 < 1.4.45-r1 +1.4.45-r1 < 1.4.47-r0 +1.4.47-r0 < 1.4.47-r1 +1.4.47-r1 < 1.4.48-r0 +1.4.48-r0 < 1.4.48-r1 +1.4.48-r1 < 1.4.49-r0 +1.4.49-r0 < 1.4.49-r1 +1.4.49-r1 < 1.4.50-r0 +1.4.50-r0 < 1.4.50-r1 +1.4.50-r1 < 1.4.52-r0 +1.4.52-r0 < 1.4.53-r0 +1.4.53-r0 < 1.4.53-r1 +1.4.53-r1 < 1.4.54-r0 +1.4.54-r0 < 1.4.54-r1 +1.4.54-r1 < 1.4.55-r0 +1.4.55-r0 < 1.4.55-r1 +1.4.55-r1 < 1.4.56-r0 +1.4.56-r0 < 1.4.56-r1 +1.4.56-r1 < 1.4.57-r0 +1.4.57-r0 < 1.4.57-r1 +1.4.57-r1 < 1.4.59-r0 +1.4.59-r0 < 1.4.59-r1 +1.4.59-r1 < 1.4.59-r2 +1.4.59-r2 < 1.4.60-r0 +1.4.60-r0 < 1.4.61-r0 +1.4.61-r0 < 1.4.61-r1 +1.4.61-r1 < 1.4.62-r0 +1.4.62-r0 < 1.4.62-r1 +1.4.62-r1 < 1.4.63-r0 +1.4.63-r0 < 1.4.63-r1 +1.4.63-r1 < 1.4.64-r0 +1.4.64-r0 < 1.4.64-r1 +1.4.64-r1 < 1.4.65-r0 +1.4.65-r0 < 1.4.65-r1 +1.4.65-r1 < 1.4.66-r0 +1.4.66-r0 < 1.4.66-r1 +1.4.66-r1 < 1.4.67-r0 +1.4.67-r0 < 1.4.67-r1 +1.4.67-r1 < 1.4.68-r0 +1.4.68-r0 < 1.4.69-r0 +1.4.69-r0 < 1.4.69-r1 +1.4.69-r1 < 1.4.69-r2 +1.4.69-r2 < 1.4.70-r2 +1.4.70-r2 < 1.4.71-r2 +1.4.71-r2 < 1.4.73-r1 +1.4.73-r1 < 1.4.73-r2 +1.3.4-r0 < 1.3.7-r0 +1.3.9-r0 < 1.3.9-r1 +1.3.9-r1 < 1.3.9-r2 +1.3.9-r2 < 1.3.9-r3 +1.3.9-r3 < 1.3.9-r4 +1.3.9-r4 < 1.3.9-r5 +1.3.9-r5 < 1.3.10-r0 +1.3.10-r0 < 1.3.10-r1 +1.3.10-r1 < 1.3.10-r2 +1.3.10-r2 < 1.3.11-r0 +1.3.11-r0 < 1.3.12-r0 +1.3.12-r2 < 1.3.12-r3 +1.3.12-r3 < 1.4.1-r0 +1.4.1-r1 < 1.4.1-r2 +1.4.1-r2 < 1.5.1-r0 +1.5.4-r1 < 1.5.4-r2 +1.5.4-r2 < 1.5.4-r3 +1.5.4-r3 < 1.6.1-r0 +1.6.1-r3 < 1.6.1-r4 +1.6.1-r4 < 1.6.1-r5 +1.6.1-r5 < 1.6.1-r6 +1.6.1-r6 < 1.6.1-r7 +1.6.1-r7 < 1.6.1-r8 +1.6.1-r8 < 1.6.1-r9 +1.6.1-r9 < 1.6.1-r10 +1.6.1-r10 < 1.6.1-r11 +1.6.1-r11 < 1.6.1-r12 +1.6.1-r12 < 1.6.1-r13 +1.6.1-r13 < 1.6.1-r14 +1.6.1-r14 < 1.6.2-r14 +1.13.4-r2 < 1.13.6-r0 +1.13.6-r0 < 1.13.6-r2 +1.13.6-r2 < 1.13.7-r0 +1.13.7-r0 < 1.13.7-r2 +1.13.7-r2 < 1.13.8-r0 +1.13.8-r0 < 1.13.8-r1 +1.13.8-r1 < 1.13.9-r1 +0.9.5-r0 < 0.9.5-r1 +0.9.5-r1 < 0.9.9-r0 +0.9.9-r0 < 0.9.14-r0 +0.9.14-r0 < 0.9.15-r0 +0.9.15-r1 < 0.9.16-r1 +0.9.16-r1 < 0.9.17-r0 +0.9.17-r0 < 0.9.18-r0 +0.9.18-r0 < 0.9.18-r1 +0.9.18-r1 < 0.9.19-r0 +0.9.19-r0 < 0.9.22-r0 +0.9.22-r0 < 0.9.23-r0 +0.9.23-r0 < 0.9.23-r1 +0.9.23-r1 < 0.9.24-r0 +0.9.24-r0 < 0.9.26-r0 +0.9.26-r0 < 0.9.26-r1 +0.9.26-r1 < 0.9.28-r0 +0.9.28-r0 < 0.9.29-r0 +0.9.30-r0 < 0.9.32-r0 +0.9.32-r0 < 0.9.35-r0 +0.9.35-r0 < 0.9.35-r1 +0.9.35-r1 < 0.9.36-r0 +0.9.36-r0 < 0.9.37-r0 +0.9.37-r0 < 0.9.38-r0 +0.9.38-r0 < 0.9.38-r1 +0.9.38-r1 < 0.9.40-r0 +0.9.40-r0 < 0.9.40-r1 +0.9.40-r1 < 0.9.40-r2 +0.9.40-r2 < 0.9.41-r0 +0.9.41-r0 < 1.0.1-r0 +1.0.1-r0 < 1.0.3-r0 +1.0.4-r0 < 1.0.6-r0 +1.0.6-r1 < 1.1.3-r0 +1.2.4-r1 < 1.2.7-r0 +1.2.7-r1 < 1.3.0-r0 +1.3.4-r1 < 1.4.6-r0 +1.4.6-r1 < 1.4.8-r0 +1.4.8-r0 < 1.6.0-r0 +1.6.0-r0 < 1.6.3-r0 +1.6.3-r2 < 1.7.6-r0 +1.7.6-r1 < 1.8.2-r0 +1.8.4-r0 < 1.8.8-r0 +1.8.8-r1 < 1.9.0-r0 +1.9.0-r0 < 2.2.0-r0 +2.2.0-r1 < 2.3.1-r0 +2.6.2-r0 < 2.6.4-r0 +2.6.4-r1 < 2.6.4-r2 +2.6.4-r2 < 2.6.5-r0 +2.6.6-r0 < 2.6.7-r0 +2.6.7-r0 < 2.6.8-r0 +2.6.8-r1 < 2.7.0-r0 +2.7.4-r1 < 2.8.0-r0 +2.8.0-r0 < 2.8.1-r0 +2.8.2-r0 < 2.9.0-r0 +2.9.1-r0 < 3.0.0-r0 +3.0.0-r2 < 3.1.0-r0 +3.1.2-r0 < 3.2.0-r0 +3.2.0-r0 < 3.3.1-r0 +3.3.1-r1 < 4.0.0-r0 +4.0.1-r0 < 4.1.0-r0 +4.1.0-r0 < 4.2.0-r0 +4.2.1-r0 < 4.3.0-r0 +1.0.3-r1 < 1.0.7-r0 +1.0.8-r2 < 1.2.0-r0 +1.2.0-r0 < 1.2.0-r2 +1.3.0-r0 < 1.3.0-r2 +1.3.0-r2 < 1.3.2-r0 +1.3.2-r0 < 1.3.2-r2 +1.3.3-r2 < 1.3.4-r0 +1.3.4-r0 < 1.3.4-r2 +1.3.4-r2 < 1.3.5-r0 +1.3.5-r0 < 1.3.5-r2 +1.3.5-r2 < 1.4.0-r0 +1.4.0-r0 < 1.4.0-r2 +1.5.0-r0 < 1.5.0-r2 +1.5.1-r0 < 1.5.1-r2 +1.5.1-r2 < 1.6.0-r0 +1.6.0-r0 < 1.6.0-r2 +1.6.1-r2 < 1.6.2-r0 +1.6.2-r0 < 1.6.2-r2 +1.6.3-r3 < 1.6.5-r4 +1.6.5-r4 < 1.6.5-r5 +1.6.5-r5 < 1.6.5-r6 +1.6.5-r6 < 1.6.5-r7 +1.6.5-r7 < 1.8.3-r0 +1.8.3-r5 < 1.8.4-r0 +1.8.4-r3 < 1.10.0-r0 +1.10.0-r4 < 1.11.0-r4 +0.9.1-r1 < 1.0.0-r0 +1.0.3-r0 < 1.0.6-r0 +1.0.7-r1 < 1.0.9-r0 +1.0.11-r0 < 1.0.12-r0 +1.0.12-r0 < 1.1.0-r0 +1.1.3-r1 < 1.1.4-r0 +1.1.4-r1 < 1.1.5-r0 +1.1.5-r1 < 1.2.0-r0 +0.14.0-r0 < 0.15.2-r0 +0.15.2-r0 < 0.16.0-r0 +0.16.2-r0 < 0.16.4-r0 +0.16.4-r0 < 0.16.6-r0 +0.16.6-r0 < 0.16.6-r1 +0.16.6-r1 < 0.18.0-r0 +0.18.0-r0 < 0.18.2-r0 +0.18.4-r0 < 0.19.4-r0 +0.19.4-r0 < 0.20.0-r0 +0.20.0-r0 < 0.20.2-r0 +0.20.2-r0 < 0.22.0-r0 +0.22.0-r0 < 0.22.0-r1 +0.22.0-r1 < 0.22.0-r2 +0.22.0-r2 < 0.22.2-r0 +0.22.2-r0 < 0.24.0-r0 +0.24.0-r0 < 0.24.2-r0 +0.24.2-r0 < 0.24.4-r0 +0.24.4-r0 < 0.26.0-r0 +0.26.0-r0 < 0.26.2-r0 +0.26.2-r0 < 0.27.2-r0 +0.27.2-r0 < 0.28.0-r0 +0.28.0-r0 < 0.28.2-r0 +0.28.2-r0 < 0.29.2-r0 +0.29.2-r0 < 0.30.0-r0 +0.30.0-r0 < 0.30.2-r0 +0.30.2-r0 < 0.32.2-r0 +0.32.2-r0 < 0.32.4-r0 +0.32.4-r0 < 0.32.6-r0 +0.32.6-r0 < 0.32.6-r1 +0.32.6-r1 < 0.32.8-r0 +0.32.8-r0 < 0.34.0-r0 +0.34.0-r0 < 0.34.0-r1 +0.34.0-r1 < 0.34.0-r2 +0.34.0-r2 < 0.34.0-r3 +0.34.0-r3 < 0.34.0-r4 +0.34.0-r4 < 0.34.0-r5 +0.34.0-r5 < 0.34.0-r6 +0.34.0-r6 < 0.38.0-r0 +0.38.0-r0 < 0.38.4-r0 +0.38.4-r0 < 0.40.0-r0 +0.7-r0 < 0.8-r0 +0.8-r0 < 0.8-r1 +0.8-r1 < 0.8-r2 +0.8-r2 < 0.8-r3 +0.8-r3 < 0.10-r0 +0.10-r2 < 0.11-r0 +0.11-r0 < 0.11-r1 +0.11-r1 < 0.11-r2 +0.11-r2 < 0.12-r2 +0.1.2-r0 < 0.1.2-r1 +0.1.2-r1 < 0.1.3-r0 +0.1.3-r0 < 0.1.99-r0 +0.1.99-r0 < 0.2.0-r0 +0.2.0-r0 < 0.2.1-r0 +0.2.1-r0 < 0.3.0-r0 +0.3.0-r0 < 0.3.1-r0 +0.3.1-r1 < 0.4.0-r1 +0.4.3-r0 < 0.4.4-r0 +0.4.4-r0 < 0.5.0-r0 +0.5.2-r0 < 0.6.0-r0 +0.6.1-r0 < 1.0.0-r0 +1.1.0-r0 < 1.2.0-r0 +1.2.1-r0 < 1.2.1-r2 +1.2.1-r2 < 1.2.2-r0 +1.2.4-r1 < 1.2.4-r2 +1.2.4-r2 < 1.3.0-r0 +1.3.0-r3 < 1.3.1-r0 +0.1.1-r0 < 0.1.1-r1 +0.1.1-r1 < 0.1.1-r2 +0.1.1-r2 < 0.8-r0 +0.8-r1 < 0.8.8-r0 +0.9.6-r0 < 0.9.7-r0 +0.9.7-r0 < 0.9.9-r0 +0.9.12-r0 < 1-r0 +1-r0 < 1-r1 +1-r1 < 1-r2 +1-r2 < 1-r3 +1-r3 < 1.0.1-r0 +1.0.2-r0 < 1.2.1-r0 +1.2.2-r1 < 1.3.0-r0 +1.3.0-r2 < 1.3.1-r0 +1.3.6-r0 < 1.3.7-r0 +1.3.9-r0 < 1.3.10-r0 +1.3.10-r0 < 1.3.11-r0 +1.3.12-r0 < 1.4.0-r0 +1.5.4-r0 < 1.6.0-r0 +1.6.3-r2 < 1.7.0-r0 +1.7.4-r1 < 1.8.0-r0 +1.8.0-r1 < 1.9.0-r0 +4.0.2-r2 < 4.0.2-r3 +4.0.2-r3 < 4.0.2-r4 +4.0.2-r4 < 4.1.0-r0 +4.1.1-r1 < 4.2.0-r0 +4.2.0-r3 < 4.2.0_p12-r3 +2.16-r1 < 2.17-r0 +2.17-r0 < 2.19-r0 +2.19-r0 < 2.19-r1 +2.19-r1 < 2.19-r2 +2.19-r2 < 2.20-r0 +2.20-r0 < 2.21-r0 +2.21-r0 < 2.22-r0 +2.22-r1 < 2.22-r2 +2.22-r2 < 2.22-r3 +2.22-r3 < 2.24-r0 +2.24-r1 < 2.25-r0 +2.25-r1 < 2.26-r0 +2.26-r0 < 2.26-r1 +2.26-r1 < 2.27-r0 +2.27-r1 < 2.36-r0 +2.36-r1 < 2.37-r0 +2.37-r1 < 2.38-r0 +2.38-r1 < 2.39-r0 +2.39-r1 < 2.40-r0 +2.40-r0 < 2.40-r1 +2.40-r1 < 2.41-r0 +2.41-r0 < 2.41-r1 +2.41-r1 < 2.42-r0 +2.42-r0 < 2.42-r1 +2.42-r1 < 2.43-r0 +2.43-r0 < 2.43-r1 +2.43-r1 < 2.44-r0 +2.44-r0 < 2.44-r1 +2.44-r1 < 2.45-r0 +2.45-r0 < 2.45-r1 +2.45-r1 < 2.46-r0 +2.46-r0 < 2.46-r1 +2.46-r1 < 2.47-r0 +2.47-r0 < 2.47-r1 +2.47-r1 < 2.48-r0 +2.48-r0 < 2.48-r1 +2.48-r1 < 2.49-r0 +2.49-r0 < 2.49-r1 +2.49-r1 < 2.50-r0 +2.51-r0 < 2.51-r1 +2.51-r1 < 2.52-r0 +2.52-r1 < 2.53-r0 +2.53-r0 < 2.53-r1 +2.53-r1 < 2.54-r0 +2.54-r0 < 2.54-r1 +2.54-r1 < 2.55-r0 +2.55-r0 < 2.55-r1 +2.55-r1 < 2.56-r0 +2.56-r0 < 2.56-r1 +2.56-r1 < 2.57-r0 +2.57-r0 < 2.57-r1 +2.57-r1 < 2.58-r0 +2.58-r0 < 2.58-r1 +2.58-r1 < 2.59-r0 +2.60-r0 < 2.60-r1 +2.60-r1 < 2.61-r0 +2.61-r0 < 2.61-r1 +2.61-r1 < 2.62-r0 +2.62-r0 < 2.62-r1 +2.62-r1 < 2.63-r0 +2.63-r0 < 2.63-r1 +2.63-r1 < 2.64-r0 +2.64-r0 < 2.64-r1 +2.64-r1 < 2.65-r0 +2.65-r0 < 2.65-r1 +3.1-r0 < 4.0-r0 +4.0-r1 < 4.1-r1 +2.0.4-r1 < 2.0.5-r0 +2.0.5-r3 < 3.1.3-r0 +3.1.3-r0 < 3.1.5-r0 +3.1.5-r0 < 3.1.6-r0 +3.1.7-r0 < 3.2-r0 +3.3-r0 < 3.4-r0 +3.4-r0 < 3.5-r0 +3.5-r1 < 3.6-r0 +3.6-r0 < 3.7-r0 +3.7-r1 < 3.7-r2 +3.7-r2 < 3.8-r0 +3.8-r0 < 3.8.1-r0 +3.8.1-r0 < 3.9-r0 +3.9-r1 < 3.10.1-r1 +3.10.1-r1 < 3.11-r1 +14.05.14-r0 < 2015.04.28-r0 +2015.04.28-r0 < 2015.9.6.2-r0 +2015.9.6.2-r0 < 2015.11.20-r0 +2015.11.20-r0 < 2016.9.26-r0 +2016.9.26-r0 < 2016.9.26-r1 +2016.9.26-r1 < 2017.4.17-r0 +2017.4.17-r0 < 2017.7.27.1-r0 +2017.7.27.1-r0 < 2017.7.27.1-r1 +2017.7.27.1-r1 < 2018.4.16-r0 +2018.4.16-r0 < 2019.3.9-r0 +2019.3.9-r0 < 2019.6.16-r0 +2019.6.16-r0 < 2019.9.11-r0 +2019.9.11-r0 < 2019.9.11-r1 +2019.9.11-r1 < 2019.9.11-r2 +2019.9.11-r2 < 2019.11.28-r0 +2019.11.28-r0 < 2020.4.5.1-r0 +2020.4.5.1-r0 < 2020.4.5.2-r0 +2020.4.5.2-r0 < 2020.6.20-r0 +2020.6.20-r0 < 2020.6.20-r1 +2020.6.20-r1 < 2020.6.20-r2 +2020.6.20-r2 < 2020.12.5-r0 +2020.12.5-r0 < 2020.12.5-r1 +2020.12.5-r1 < 2020.12.5-r2 +2020.12.5-r2 < 2021.10.8-r0 +2021.10.8-r0 < 2022.6.15-r0 +2022.6.15-r0 < 2022.9.24-r0 +2022.9.24-r0 < 2022.9.24-r1 +2022.9.24-r1 < 2022.12.7-r0 +2022.12.7-r0 < 2022.12.7-r1 +2022.12.7-r1 < 2022.12.7-r2 +2022.12.7-r2 < 2023.5.7-r2 +3.2.8-r1 < 3.2.8-r2 +3.2.8-r2 < 3.3.4-r0 +3.3.4-r1 < 3.3.6-r0 +3.3.6-r0 < 3.3.8-r0 +3.3.9-r1 < 3.3.9-r2 +3.3.9-r2 < 3.3.9-r3 +3.3.9-r3 < 3.3.12-r0 +3.3.12-r1 < 3.3.12-r2 +3.3.12-r2 < 3.3.12-r3 +3.3.12-r3 < 3.3.12-r4 +3.3.12-r4 < 3.3.12-r5 +3.3.12-r5 < 3.3.15-r0 +3.3.15-r0 < 3.3.15-r1 +3.3.15-r1 < 3.3.16-r1 +3.3.16-r1 < 3.3.17-r1 +0.6.5.7-r0 < 0.6.5.7-r1 +0.6.5.7-r1 < 0.6.5.8-r0 +0.6.5.8-r0 < 0.6.5.9-r0 +0.6.5.9-r0 < 0.6.5.9-r1 +0.6.5.9-r1 < 0.7.1-r0 +0.7.1-r0 < 0.7.3-r0 +0.7.3-r0 < 0.7.7-r0 +0.7.7-r0 < 0.7.8-r0 +0.7.8-r0 < 0.7.12-r0 +0.7.12-r0 < 0.7.12-r1 +0.7.12-r1 < 0.7.13-r0 +0.7.13-r0 < 0.8.0-r0 +0.8.2-r0 < 0.8.2-r1 +0.8.2-r1 < 0.8.3-r0 +0.8.5-r1 < 2.0.0-r0 +2.0.1-r0 < 2.0.3-r0 +2.0.3-r2 < 2.0.3-r3 +2.0.3-r3 < 2.1.1-r0 +2.1.2-r0 < 2.1.4-r0 +2.1.4-r1 < 2.1.4-r2 +2.1.4-r2 < 2.1.5-r0 +2.1.5-r1 < 2.1.6-r0 +2.1.10-r2 < 2.1.11-r0 +2.1.11-r0 < 2.1.11-r1 +2.1.11-r1 < 2.1.12-r0 +2.1.13-r0 < 2.1.13-r1 +2.1.13-r1 < 2.2.1-r0 +1.7.14-r0 < 1.7.14-r1 +1.7.14-r1 < 1.7.15-r0 +1.7.15-r0 < 1.7.15-r1 +1.7.15-r1 < 1.7.15-r2 +1.7.15-r2 < 1.7.15-r3 +1.7.15-r3 < 1.7.15-r4 +1.7.15-r4 < 1.7.16-r0 +1.7.16-r0 < 1.7.16-r1 +0.3.1-r0 < 0.4.0-r0 +0.4.0-r1 < 0.5.0-r0 +0.5.2-r1 < 0.6.0-r0 +0.7.1-r0 < 0.8.0-r0 +0.8.0-r0 < 0.8.1-r0 +0.8.2-r0 < 0.9.0-r0 +0.9.2-r0 < 1.0.0-r0 +1.1.0-r1 < 1.2.0-r1 +16.0-r0 < 16.0-r1 +16.0-r1 < 16.0-r2 +16.0-r2 < 16.1-r2 + diff --git a/internal/semantic/fixtures/alpine-versions.txt b/internal/semantic/fixtures/alpine-versions.txt new file mode 100644 index 00000000000..22ed323d48d --- /dev/null +++ b/internal/semantic/fixtures/alpine-versions.txt @@ -0,0 +1,781 @@ +1-r1 = 1-r01 +1-r = 1-r0 +# on latest apk these are "<" but on 3.x they're ">" +1-r-0 < 1-r0 +1-r-1 < 1-r0 + +# letters +1a = 1a +1b < 1c +2b > 1c +1a < 1z + +1.2.3b > 1.2.0d + +# letters (invalid) - note on latest apk these are "<" but on 3.x line they're ">" +1.2.0A < 1.2.0d +1.2.0D < 1.2.0d + +# https://gitlab.alpinelinux.org/alpine/abuild/-/issues/10088 +6.6.2p1 = 6.6.2p1 +6.6.2p1 > 6.6.2_p1 +6.6.2p1 > 6.6.2_p2 +6.6.2p1 < 6.6.2p2 +6.6.2_p1 < 6.6.2_p2 + +# invalid +1-r2 > 1-r-1 +# on latest apk this is ">" but on 3.x they're "<" +1 > 1-ruff + +# yes, these are all correct... +1-r0-1 = 1-r-2 +1-r0-1 = 1-r0-2 +1-ruff2 = 1-ruff1 +# on latest apk these are "<" but on 3.x they're ">" +1-ruff2 = 1--ruff1 +1-r0-ruff2 = 1-r0-ruff1 + +1.2 > 1.2_blah +1.2 > 1.2_rc1 +1.2 < 1.2_cvs1 +1.2 < 1.2_svn1 +1.2 < 1.2_git1 +1.2 < 1.2_hg1 +1.2 < 1.2_p1 +1.2_svn2 < 1.2_git1 +1.2_svn1 > 1.2_csv2 +1.2_cvs1 > 1.2_blah + +# from https://raw.githubusercontent.com/alpinelinux/apk-tools/master/tests/version.data +2.34 > 0.1.0_alpha +# todo: this might be invalid? +23_foo > 4_beta +# invalid. do string sort +1.0 < 1.0bc +0.1.0_alpha = 0.1.0_alpha +0.1.0_alpha < 0.1.3_alpha +0.1.3_alpha > 0.1.0_alpha +0.1.0_alpha2 > 0.1.0_alpha +0.1.0_alpha < 2.2.39-r1 +2.2.39-r1 > 1.0.4-r3 +1.0.4-r3 < 1.0.4-r4 +1.0.4-r4 < 1.6 +1.6 > 1.0.2 +1.0.2 > 0.7-r1 +0.7-r1 < 1.0.0 +1.0.0 < 1.0.1 +1.0.1 < 1.1 +1.1 > 1.1_alpha1 +1.1_alpha1 < 1.2.1 +1.2.1 > 1.2 +1.2 < 1.3_alpha +1.3_alpha < 1.3_alpha2 +1.3_alpha2 < 1.3_alpha3 +1.3_alpha8 > 0.6.0 +0.6.0 < 0.6.1 +0.6.1 < 0.7.0 +0.7.0 < 0.8_beta1 +0.8_beta1 < 0.8_beta2 +0.8_beta4 < 4.8-r1 +4.8-r1 > 3.10.18-r1 +3.10.18-r1 > 2.3.0b-r1 +2.3.0b-r1 < 2.3.0b-r2 +2.3.0b-r2 < 2.3.0b-r3 +2.3.0b-r3 < 2.3.0b-r4 +2.3.0b-r4 > 0.12.1 +0.12.1 < 0.12.2 +0.12.2 < 0.12.3 +0.12.3 > 0.12 +0.12 < 0.13_beta1 +0.13_beta1 < 0.13_beta2 +0.13_beta2 < 0.13_beta3 +0.13_beta3 < 0.13_beta4 +0.13_beta4 < 0.13_beta5 +0.13_beta5 > 0.9.12 +0.9.12 < 0.9.13 +0.9.13 > 0.9.12 +0.9.12 < 0.9.13 +0.9.13 > 0.0.16 +0.0.16 < 0.6 +0.6 < 2.1.13-r3 +2.1.13-r3 < 2.1.15-r2 +2.1.15-r2 < 2.1.15-r3 +2.1.15-r3 > 1.2.11 +1.2.11 < 1.2.12.1 +1.2.12.1 < 1.2.13 +1.2.13 < 1.2.14-r1 +1.2.14-r1 > 0.7.1 +0.7.1 > 0.5.4 +0.5.4 < 0.7.0 +0.7.0 < 1.2.13 +1.2.13 > 1.0.8 +1.0.8 < 1.2.1 +1.2.1 > 0.7-r1 +0.7-r1 < 2.4.32 +2.4.32 < 2.8-r4 +2.8-r4 > 0.9.6 +0.9.6 > 0.2.0-r1 +0.2.0-r1 = 0.2.0-r1 +0.2.0-r1 < 3.1_p16 +3.1_p16 < 3.1_p17 +3.1_p17 > 1.06-r6 +1.06-r6 < 006 +006 > 1.0.0 +1.0.0 < 1.2.2-r1 +1.2.2-r1 > 1.2.2 +1.2.2 > 0.3-r1 +0.3-r1 < 9.3.2-r4 +9.3.2-r4 < 9.3.4-r2 +9.3.4-r2 > 9.3.4 +9.3.4 > 9.3.2 +9.3.2 < 9.3.4 +9.3.4 > 1.1.3 +1.1.3 < 2.16.1-r3 +2.16.1-r3 = 2.16.1-r3 +2.16.1-r3 > 2.1.0-r2 +2.1.0-r2 < 2.9.3-r1 +2.9.3-r1 > 0.9-r1 +0.9-r1 > 0.8-r1 +0.8-r1 < 1.0.6-r3 +1.0.6-r3 > 0.11 +0.11 < 0.12 +0.12 < 1.2.1-r1 +1.2.1-r1 < 1.2.2.1 +1.2.2.1 < 1.4.1-r1 +1.4.1-r1 < 1.4.1-r2 +1.4.1-r2 > 1.2.2 +1.2.2 < 1.3 +1.3 > 1.0.3-r6 +1.0.3-r6 < 1.0.4 +1.0.4 < 2.59 +2.59 < 20050718-r1 +20050718-r1 < 20050718-r2 +20050718-r2 > 3.9.8-r5 +3.9.8-r5 > 2.01.01_alpha10 +2.01.01_alpha10 > 0.94 +0.94 < 1.0 +1.0 > 0.99.3.20040818 +0.99.3.20040818 > 0.7 +0.7 < 1.21-r1 +1.21-r1 > 0.13 +0.13 < 0.90.1-r1 +0.90.1-r1 > 0.10.2 +0.10.2 < 0.10.3 +0.10.3 < 1.6 +1.6 < 1.39 +1.39 > 1.00_beta2 +1.00_beta2 > 0.9.2 +0.9.2 < 5.94-r1 +5.94-r1 < 6.4 +6.4 > 2.6-r5 +2.6-r5 > 1.4 +1.4 < 2.8.9-r1 +2.8.9-r1 > 2.8.9 +2.8.9 > 1.1 +1.1 > 1.0.3-r2 +1.0.3-r2 < 1.3.4-r3 +1.3.4-r3 < 2.2 +2.2 > 1.2.6 +1.2.6 < 7.15.1-r1 +7.15.1-r1 > 1.02 +1.02 < 1.03-r1 +1.03-r1 < 1.12.12-r2 +1.12.12-r2 < 2.8.0.6-r1 +2.8.0.6-r1 > 0.5.2.7 +0.5.2.7 < 4.2.52_p2-r1 +4.2.52_p2-r1 < 4.2.52_p4-r2 +4.2.52_p4-r2 > 1.02.07 +1.02.07 < 1.02.10-r1 +1.02.10-r1 < 3.0.3-r9 +3.0.3-r9 > 2.0.5-r1 +2.0.5-r1 < 4.5 +4.5 > 2.8.7-r1 +2.8.7-r1 > 1.0.5 +1.0.5 < 8 +8 < 9 +9 > 2.18.3-r10 +2.18.3-r10 > 1.05-r18 +1.05-r18 < 1.05-r19 +1.05-r19 < 2.2.5 +2.2.5 < 2.8 +2.8 < 2.20.1 +2.20.1 < 2.20.3 +2.20.3 < 2.31 +2.31 < 2.34 +2.34 < 2.38 +2.38 < 20050405 +20050405 > 1.8 +1.8 < 2.11-r1 +2.11-r1 > 2.11 +2.11 > 0.1.6-r3 +0.1.6-r3 < 0.47-r1 +0.47-r1 < 0.49 +0.49 < 3.6.8-r2 +3.6.8-r2 > 1.39 +1.39 < 2.43 +2.43 > 2.0.6-r1 +2.0.6-r1 > 0.2-r6 +0.2-r6 < 0.4 +0.4 < 1.0.0 +1.0.0 < 10-r1 +10-r1 > 4 +4 > 0.7.3-r2 +0.7.3-r2 > 0.7.3 +0.7.3 < 1.95.8 +1.95.8 > 1.1.19 +1.1.19 > 1.1.5 +1.1.5 < 6.3.2-r1 +6.3.2-r1 < 6.3.3 +6.3.3 > 4.17-r1 +4.17-r1 < 4.18 +4.18 < 4.19 +4.19 > 4.3.0 +4.3.0 < 4.3.2-r1 +4.3.2-r1 > 4.3.2 +4.3.2 > 0.68-r3 +0.68-r3 < 1.0.0 +1.0.0 < 1.0.1 +1.0.1 > 1.0.0 +1.0.0 = 1.0.0 +1.0.0 < 1.0.1 +1.0.1 < 2.3.2-r1 +2.3.2-r1 < 2.4.2 +2.4.2 < 20060720 +20060720 > 3.0.20060720 +3.0.20060720 < 20060720 +20060720 > 1.1 +1.1 = 1.1 +1.1 < 1.1.1-r1 +1.1.1-r1 < 1.1.3-r1 +1.1.3-r1 < 1.1.3-r2 +1.1.3-r2 < 2.1.10-r2 +2.1.10-r2 > 0.7.18-r2 +0.7.18-r2 < 0.17-r6 +0.17-r6 < 2.6.1 +2.6.1 < 2.6.3 +2.6.3 < 3.1.5-r2 +3.1.5-r2 < 3.4.6-r1 +3.4.6-r1 < 3.4.6-r2 +3.4.6-r2 = 3.4.6-r2 +3.4.6-r2 > 2.0.33 +2.0.33 < 2.0.34 +2.0.34 > 1.8.3-r2 +1.8.3-r2 < 1.8.3-r3 +1.8.3-r3 < 4.1 +4.1 < 8.54 +8.54 > 4.1.4 +4.1.4 > 1.2.10-r5 +1.2.10-r5 < 4.1.4-r3 +4.1.4-r3 = 4.1.4-r3 +4.1.4-r3 < 4.2.1 +4.2.1 > 4.1.0 +4.1.0 < 8.11 +8.11 > 1.4.4-r1 +1.4.4-r1 < 2.1.9.200602141850 +2.1.9.200602141850 > 1.6 +1.6 < 2.5.1-r8 +2.5.1-r8 < 2.5.1a-r1 +2.5.1a-r1 > 1.19.2-r1 +1.19.2-r1 > 0.97-r2 +0.97-r2 < 0.97-r3 +0.97-r3 < 1.3.5-r10 +1.3.5-r10 > 1.3.5-r8 +1.3.5-r8 < 1.3.5-r9 +1.3.5-r9 > 1.0 +1.0 < 1.1 +1.1 > 0.9.11 +0.9.11 < 0.9.12 +0.9.12 < 0.9.13 +0.9.13 < 0.9.14 +0.9.14 < 0.9.15 +0.9.15 < 0.9.16 +0.9.16 > 0.3-r2 +0.3-r2 < 6.3 +6.3 < 6.6 +6.6 < 6.9 +6.9 > 0.7.2-r3 +0.7.2-r3 < 1.2.10 +1.2.10 < 20040923-r2 +20040923-r2 > 20040401 +20040401 > 2.0.0_rc3-r1 +2.0.0_rc3-r1 > 1.5 +1.5 < 4.4 +4.4 > 1.0.1 +1.0.1 < 2.2.0 +2.2.0 > 1.1.0-r2 +1.1.0-r2 > 0.3 +0.3 < 20020207-r2 +20020207-r2 > 1.31-r2 +1.31-r2 < 3.7 +3.7 > 2.0.1 +2.0.1 < 2.0.2 +2.0.2 > 0.99.163 +0.99.163 < 2.6.15.20060110 +2.6.15.20060110 < 2.6.16.20060323 +2.6.16.20060323 < 2.6.19.20061214 +2.6.19.20061214 > 0.6.2-r1 +0.6.2-r1 < 0.6.3 +0.6.3 < 0.6.5 +0.6.5 < 1.3.5-r1 +1.3.5-r1 < 1.3.5-r4 +1.3.5-r4 < 3.0.0-r2 +3.0.0-r2 < 021109-r3 +021109-r3 < 20060512 +20060512 > 1.24 +1.24 > 0.9.16-r1 +0.9.16-r1 < 3.9_pre20060124 +3.9_pre20060124 > 0.01 +0.01 < 0.06 +0.06 < 1.1.7 +1.1.7 < 6b-r7 +6b-r7 > 1.12-r7 +1.12-r7 < 1.12-r8 +1.12-r8 > 1.1.12 +1.1.12 < 1.1.13 +1.1.13 > 0.3 +0.3 < 0.5 +0.5 < 3.96.1 +3.96.1 < 3.97 +3.97 > 0.10.0-r1 +0.10.0-r1 > 0.10.0 +0.10.0 < 0.10.1_rc1 +0.10.1_rc1 > 0.9.11 +0.9.11 < 394 +394 > 2.31 +2.31 > 1.0.1 +1.0.1 = 1.0.1 +1.0.1 < 1.0.3 +1.0.3 > 1.0.2 +1.0.2 = 1.0.2 +1.0.2 > 1.0.1 +1.0.1 = 1.0.1 +1.0.1 < 1.2.2 +1.2.2 < 2.1.10 +2.1.10 > 1.0.1 +1.0.1 < 1.0.2 +1.0.2 < 3.5.5 +3.5.5 > 1.1.1 +1.1.1 > 0.9.1 +0.9.1 < 1.0.2 +1.0.2 > 1.0.1 +1.0.1 < 1.0.2 +1.0.2 > 1.0.1 +1.0.1 = 1.0.1 +1.0.1 < 1.0.5 +1.0.5 > 0.8.5 +0.8.5 < 0.8.6-r3 +0.8.6-r3 < 2.3.17 +2.3.17 > 1.10-r5 +1.10-r5 < 1.10-r9 +1.10-r9 < 2.0.2 +2.0.2 > 1.1a +1.1a < 1.3a +1.3a > 1.0.2 +1.0.2 < 1.2.2-r1 +1.2.2-r1 > 1.0-r1 +1.0-r1 > 0.15.1b +0.15.1b < 1.0.1 +1.0.1 < 1.06-r1 +1.06-r1 < 1.06-r2 +1.06-r2 > 0.15.1b-r2 +0.15.1b-r2 > 0.15.1b +0.15.1b < 2.5.7 +2.5.7 > 1.1.2.1-r1 +1.1.2.1-r1 > 0.0.31 +0.0.31 < 0.0.50 +0.0.50 > 0.0.16 +0.0.16 < 0.0.25 +0.0.25 < 0.17 +0.17 > 0.5.0 +0.5.0 < 1.1.2 +1.1.2 < 1.1.3 +1.1.3 < 1.1.20 +1.1.20 > 0.9.4 +0.9.4 < 0.9.5 +0.9.5 < 6.3 +6.3 < 6.6 +6.6 > 6.3 +6.3 < 6.6 +6.6 > 1.2.12-r1 +1.2.12-r1 < 1.2.13 +1.2.13 < 1.2.14 +1.2.14 < 1.2.15 +1.2.15 < 8.0.12 +8.0.12 > 8.0.9 +8.0.9 > 1.2.3-r1 +1.2.3-r1 < 1.2.4-r1 +1.2.4-r1 > 0.1 +0.1 < 0.3.5 +0.3.5 < 1.5.22 +1.5.22 > 0.1.11 +0.1.11 < 0.1.12 +0.1.12 < 1.1.4.1 +1.1.4.1 > 1.1.0 +1.1.0 < 1.1.2 +1.1.2 > 1.0.3 +1.0.3 > 1.0.2 +1.0.2 < 2.6.26 +2.6.26 < 2.6.27 +2.6.27 > 1.1.17 +1.1.17 < 1.4.11 +1.4.11 < 22.7-r1 +22.7-r1 < 22.7.3-r1 +22.7.3-r1 > 22.7 +22.7 > 2.1_pre20 +2.1_pre20 < 2.1_pre26 +2.1_pre26 > 0.2.3-r2 +0.2.3-r2 > 0.2.2 +0.2.2 < 2.10.0 +2.10.0 < 2.10.1 +2.10.1 > 02.08.01b +02.08.01b < 4.77 +4.77 > 0.17 +0.17 < 5.1.1-r1 +5.1.1-r1 < 5.1.1-r2 +5.1.1-r2 > 5.1.1 +5.1.1 > 1.2 +1.2 < 5.1 +5.1 > 2.02.06 +2.02.06 < 2.02.10 +2.02.10 < 2.8.5-r3 +2.8.5-r3 < 2.8.6-r1 +2.8.6-r1 < 2.8.6-r2 +2.8.6-r2 > 2.02-r1 +2.02-r1 > 1.5.0-r1 +1.5.0-r1 > 1.5.0 +1.5.0 > 0.9.2 +0.9.2 < 8.1.2.20040524-r1 +8.1.2.20040524-r1 < 8.1.2.20050715-r1 +8.1.2.20050715-r1 < 20030215 +20030215 > 3.80-r4 +3.80-r4 < 3.81 +3.81 > 1.6d +1.6d > 1.2.07.8 +1.2.07.8 < 1.2.12.04 +1.2.12.04 < 1.2.12.05 +1.2.12.05 < 1.3.3 +1.3.3 < 2.6.4 +2.6.4 > 2.5.2 +2.5.2 < 2.6.1 +2.6.1 > 2.6 +2.6 < 6.5.1-r1 +6.5.1-r1 > 1.1.35-r1 +1.1.35-r1 < 1.1.35-r2 +1.1.35-r2 > 0.9.2 +0.9.2 < 1.07-r1 +1.07-r1 < 1.07.5 +1.07.5 > 1.07 +1.07 < 1.19 +1.19 < 2.1-r2 +2.1-r2 < 2.2 +2.2 > 1.0.4 +1.0.4 < 20060811 +20060811 < 20061003 +20061003 > 0.1_pre20060810 +0.1_pre20060810 < 0.1_pre20060817 +0.1_pre20060817 < 1.0.3 +1.0.3 > 1.0.2 +1.0.2 > 1.0.1 +1.0.1 < 3.2.2-r1 +3.2.2-r1 < 3.2.2-r2 +3.2.2-r2 < 3.3.17 +3.3.17 > 0.59s-r11 +0.59s-r11 < 0.65 +0.65 > 0.2.10-r2 +0.2.10-r2 < 2.01 +2.01 < 3.9.10 +3.9.10 > 1.2.18 +1.2.18 < 1.5.11-r2 +1.5.11-r2 < 1.5.13-r1 +1.5.13-r1 > 1.3.12-r1 +1.3.12-r1 < 2.0.1 +2.0.1 < 2.0.2 +2.0.2 < 2.0.3 +2.0.3 > 0.2.0 +0.2.0 < 5.5-r2 +5.5-r2 < 5.5-r3 +5.5-r3 > 0.25.3 +0.25.3 < 0.26.1-r1 +0.26.1-r1 < 5.2.1.2-r1 +5.2.1.2-r1 < 5.4 +5.4 > 1.60-r11 +1.60-r11 < 1.60-r12 +1.60-r12 < 110-r8 +110-r8 > 0.17-r2 +0.17-r2 < 1.05-r4 +1.05-r4 < 5.28.0 +5.28.0 > 0.51.6-r1 +0.51.6-r1 < 1.0.6-r6 +1.0.6-r6 > 0.8.3 +0.8.3 < 1.42 +1.42 < 20030719 +20030719 > 4.01 +4.01 < 4.20 +4.20 > 0.20070118 +0.20070118 < 0.20070207_rc1 +0.20070207_rc1 < 1.0 +1.0 < 1.13.0 +1.13.0 < 1.13.1 +1.13.1 > 0.21 +0.21 > 0.3.7-r3 +0.3.7-r3 < 0.4.10 +0.4.10 < 0.5.0 +0.5.0 < 0.5.5 +0.5.5 < 0.5.7 +0.5.7 < 0.6.11-r1 +0.6.11-r1 < 2.3.30-r2 +2.3.30-r2 < 3.7_p1 +3.7_p1 > 1.3 +1.3 > 0.10.1 +0.10.1 < 4.3_p2-r1 +4.3_p2-r1 < 4.3_p2-r5 +4.3_p2-r5 < 4.4_p1-r6 +4.4_p1-r6 < 4.5_p1-r1 +4.5_p1-r1 > 4.5_p1 +4.5_p1 < 4.5_p1-r1 +4.5_p1-r1 > 4.5_p1 +4.5_p1 > 0.9.8c-r1 +0.9.8c-r1 < 0.9.8d +0.9.8d < 2.4.4 +2.4.4 < 2.4.7 +2.4.7 > 2.0.6 +2.0.6 = 2.0.6 +2.0.6 > 0.78-r3 +0.78-r3 > 0.3.2 +0.3.2 < 1.7.1-r1 +1.7.1-r1 < 2.5.9 +2.5.9 > 0.1.13 +0.1.13 < 0.1.15 +0.1.15 < 0.4 +0.4 < 0.9.6 +0.9.6 < 2.2.0-r1 +2.2.0-r1 < 2.2.3-r2 +2.2.3-r2 < 013 +013 < 014-r1 +014-r1 > 1.3.1-r1 +1.3.1-r1 < 5.8.8-r2 +5.8.8-r2 > 5.1.6-r4 +5.1.6-r4 < 5.1.6-r6 +5.1.6-r6 < 5.2.1-r3 +5.2.1-r3 > 0.11.3 +0.11.3 = 0.11.3 +0.11.3 < 1.10.7 +1.10.7 > 1.7-r1 +1.7-r1 > 0.1.20 +0.1.20 < 0.1.23 +0.1.23 < 5b-r9 +5b-r9 > 2.2.10 +2.2.10 < 2.3.6 +2.3.6 < 8.0.12 +8.0.12 > 2.4.3-r16 +2.4.3-r16 < 2.4.4-r4 +2.4.4-r4 < 3.0.3-r5 +3.0.3-r5 < 3.0.6 +3.0.6 < 3.2.6 +3.2.6 < 3.2.7 +3.2.7 > 0.3.1_rc8 +0.3.1_rc8 < 22.2 +22.2 < 22.3 +22.3 > 1.2.2 +1.2.2 < 2.04 +2.04 < 2.4.3-r1 +2.4.3-r1 < 2.4.3-r4 +2.4.3-r4 > 0.98.6-r1 +0.98.6-r1 < 5.7-r2 +5.7-r2 < 5.7-r3 +5.7-r3 > 5.1_p4 +5.1_p4 > 1.0.5 +1.0.5 < 3.6.19-r1 +3.6.19-r1 > 3.6.19 +3.6.19 > 1.0.1 +1.0.1 < 3.8 +3.8 > 0.2.3 +0.2.3 < 1.2.15-r3 +1.2.15-r3 > 1.2.6-r1 +1.2.6-r1 < 2.6.8-r2 +2.6.8-r2 < 2.6.9-r1 +2.6.9-r1 > 1.7 +1.7 < 1.7b +1.7b < 1.8.4-r3 +1.8.4-r3 < 1.8.5 +1.8.5 < 1.8.5_p2 +1.8.5_p2 > 1.1.3 +1.1.3 < 3.0.22-r3 +3.0.22-r3 < 3.0.24 +3.0.24 = 3.0.24 +3.0.24 = 3.0.24 +3.0.24 < 4.0.2-r5 +4.0.2-r5 < 4.0.3 +4.0.3 > 0.98 +0.98 < 1.00 +1.00 < 4.1.4-r1 +4.1.4-r1 < 4.1.5 +4.1.5 > 2.3 +2.3 < 2.17-r3 +2.17-r3 > 0.1.7 +0.1.7 < 1.11 +1.11 < 4.2.1-r11 +4.2.1-r11 > 3.2.3 +3.2.3 < 3.2.4 +3.2.4 < 3.2.8 +3.2.8 < 3.2.9 +3.2.9 > 3.2.3 +3.2.3 < 3.2.4 +3.2.4 < 3.2.8 +3.2.8 < 3.2.9 +3.2.9 > 1.4.9-r2 +1.4.9-r2 < 2.9.11_pre20051101-r2 +2.9.11_pre20051101-r2 < 2.9.11_pre20051101-r3 +2.9.11_pre20051101-r3 > 2.9.11_pre20051101 +2.9.11_pre20051101 < 2.9.11_pre20061021-r1 +2.9.11_pre20061021-r1 < 2.9.11_pre20061021-r2 +2.9.11_pre20061021-r2 < 5.36-r1 +5.36-r1 > 1.0.1 +1.0.1 < 7.0-r2 +7.0-r2 > 2.4.5 +2.4.5 < 2.6.1.2 +2.6.1.2 < 2.6.1.3-r1 +2.6.1.3-r1 > 2.6.1.3 +2.6.1.3 < 2.6.1.3-r1 +2.6.1.3-r1 < 12.17.9 +12.17.9 > 1.1.12 +1.1.12 > 1.1.7 +1.1.7 < 2.5.14 +2.5.14 < 2.6.6-r1 +2.6.6-r1 < 2.6.7 +2.6.7 < 2.6.9-r1 +2.6.9-r1 > 2.6.9 +2.6.9 > 1.39 +1.39 > 0.9 +0.9 < 2.61-r2 +2.61-r2 < 4.5.14 +4.5.14 > 4.09-r1 +4.09-r1 > 1.3.1 +1.3.1 < 1.3.2-r3 +1.3.2-r3 < 1.6.8_p12-r1 +1.6.8_p12-r1 > 1.6.8_p9-r2 +1.6.8_p9-r2 > 1.3.0-r1 +1.3.0-r1 < 3.11 +3.11 < 3.20 +3.20 > 1.6.11-r1 +1.6.11-r1 > 1.6.9 +1.6.9 < 5.0.5-r2 +5.0.5-r2 > 2.86-r5 +2.86-r5 < 2.86-r6 +2.86-r6 > 1.15.1-r1 +1.15.1-r1 < 8.4.9 +8.4.9 > 7.6-r8 +7.6-r8 > 3.9.4-r2 +3.9.4-r2 < 3.9.4-r3 +3.9.4-r3 < 3.9.5-r2 +3.9.5-r2 > 1.1.9 +1.1.9 > 1.0.6 +1.0.6 < 5.9 +5.9 < 6.5 +6.5 > 0.40-r1 +0.40-r1 < 2.25b-r5 +2.25b-r5 < 2.25b-r6 +2.25b-r6 > 1.0.4 +1.0.4 < 1.0.5 +1.0.5 < 1.4_p12-r2 +1.4_p12-r2 < 1.4_p12-r5 +1.4_p12-r5 > 1.1 +1.1 > 0.2.0-r1 +0.2.0-r1 < 0.2.1 +0.2.1 < 0.9.28-r1 +0.9.28-r1 < 0.9.28-r2 +0.9.28-r2 < 0.9.28.1 +0.9.28.1 > 0.9.28 +0.9.28 < 0.9.28.1 +0.9.28.1 < 087-r1 +087-r1 < 103 +103 < 104-r11 +104-r11 > 104-r9 +104-r9 > 1.23-r1 +1.23-r1 > 1.23 +1.23 < 1.23-r1 +1.23-r1 > 1.0.2 +1.0.2 < 5.52-r1 +5.52-r1 > 1.2.5_rc2 +1.2.5_rc2 > 0.1 +0.1 < 0.71-r1 +0.71-r1 < 20040406-r1 +20040406-r1 > 2.12r-r4 +2.12r-r4 < 2.12r-r5 +2.12r-r5 > 0.0.7 +0.0.7 < 1.0.3 +1.0.3 < 1.8 +1.8 < 7.0.17 +7.0.17 < 7.0.174 +7.0.174 > 7.0.17 +7.0.17 < 7.0.174 +7.0.174 > 1.0.1 +1.0.1 < 1.1.1-r3 +1.1.1-r3 > 0.3.4_pre20061029 +0.3.4_pre20061029 < 0.4.0 +0.4.0 > 0.1.2 +0.1.2 < 1.10.2 +1.10.2 < 2.16 +2.16 < 28 +28 > 0.99.4 +0.99.4 < 1.13 +1.13 > 1.0.1 +1.0.1 < 1.1.2-r2 +1.1.2-r2 > 1.1.0 +1.1.0 < 1.1.1 +1.1.1 = 1.1.1 +1.1.1 > 0.6.0 +0.6.0 < 6.6.3 +6.6.3 > 1.1.1 +1.1.1 > 1.1.0 +1.1.0 = 1.1.0 +1.1.0 > 0.2.0 +0.2.0 < 0.3.0 +0.3.0 < 1.1.1 +1.1.1 < 1.2.0 +1.2.0 > 1.1.0 +1.1.0 < 1.6.5 +1.6.5 > 1.1.0 +1.1.0 < 1.4.2 +1.4.2 > 1.1.1 +1.1.1 < 2.8.1 +2.8.1 > 1.2.0 +1.2.0 < 4.1.0 +4.1.0 > 0.4.1 +0.4.1 < 1.9.1 +1.9.1 < 2.1.1 +2.1.1 > 1.4.1 +1.4.1 > 0.9.1-r1 +0.9.1-r1 > 0.8.1 +0.8.1 < 1.2.1-r1 +1.2.1-r1 > 1.1.0 +1.1.0 < 1.2.1 +1.2.1 > 1.1.0 +1.1.0 > 0.1.1 +0.1.1 < 1.2.1 +1.2.1 < 4.1.0 +4.1.0 > 0.2.1-r1 +0.2.1-r1 < 1.1.0 +1.1.0 < 2.7.11 +2.7.11 > 1.0.2-r6 +1.0.2-r6 > 1.0.2 +1.0.2 > 0.8 +0.8 < 1.1.1-r4 +1.1.1-r4 < 222 +222 > 1.0.1 +1.0.1 < 1.2.12-r1 +1.2.12-r1 > 1.2.8 +1.2.8 < 1.2.9.1-r1 +1.2.9.1-r1 > 1.2.9.1 +1.2.9.1 < 2.31-r1 +2.31-r1 > 2.31 +2.31 > 1.2.3-r1 +1.2.3-r1 > 1.2.3 +1.2.3 < 4.2.5 +4.2.5 < 4.3.2-r2 +1.3-r0 < 1.3.1-r0 +1.3_pre1-r1 < 1.3.2 +1.0_p10-r0 > 1.0_p9-r0 +0.1.0_alpha_pre2 < 0.1.0_alpha +1.0.0_pre20191002222144-r0 < 1.0.0_pre20210530193627-r0 diff --git a/internal/semantic/parse.go b/internal/semantic/parse.go index 029a1f155d6..c324b2ae71e 100644 --- a/internal/semantic/parse.go +++ b/internal/semantic/parse.go @@ -28,6 +28,8 @@ func Parse(str string, ecosystem models.Ecosystem) (Version, error) { return parseSemverVersion(str), nil case "Debian": return parseDebianVersion(str), nil + case "Alpine": + return parseAlpineVersion(str), nil case "RubyGems": return parseRubyGemsVersion(str), nil case "NuGet": diff --git a/internal/semantic/version-alpine.go b/internal/semantic/version-alpine.go new file mode 100644 index 00000000000..c96fdf7a7e9 --- /dev/null +++ b/internal/semantic/version-alpine.go @@ -0,0 +1,337 @@ +package semantic + +import ( + "math/big" + "strings" + + "github.com/google/osv-scanner/internal/cachedregexp" +) + +type alpineNumberComponent struct { + original string + value *big.Int + index int +} + +func (anc alpineNumberComponent) Cmp(b alpineNumberComponent) int { + // ignore trailing zeros for the first digits in each version + if anc.index != 0 && b.index != 0 { + if anc.original[0] == '0' || b.original[0] == '0' { + return strings.Compare(anc.original, b.original) + } + } + + return anc.value.Cmp(b.value) +} + +type alpineNumberComponents []alpineNumberComponent + +func (components *alpineNumberComponents) Fetch(n int) alpineNumberComponent { + if len(*components) <= n { + return alpineNumberComponent{original: "0", value: new(big.Int)} + } + + return (*components)[n] +} + +type alpineSuffix struct { + // the weight of this suffix for sorting, and implicitly what actual string it is: + // *alpha*, *beta*, *pre*, *rc*, , *cvs*, *svn*, *git*, *hg*, *p* + weight int + // the number value of this suffix component + number *big.Int +} + +// weights the given suffix string based on the sort order of official supported suffixes. +// +// this is expected to be _just_ the suffix "string" i.e. it should not start with a "_" +// or have any trailing numbers. +func weightAlpineSuffixString(suffixStr string) int { + // "p" is omitted since it's the highest suffix, so it will be the final return + supported := []string{"alpha", "beta", "pre", "rc", "", "cvs", "svn", "git", "hg"} + + for i, s := range supported { + if suffixStr == s { + return i + } + } + + // if we didn't match a support suffix already, then we're "p" which + // has the highest weight as our parser only captures valid suffixes + return len(supported) +} + +// AlpineVersion represents a version of an Alpine package. +// +// Currently, the APK version specification is as follows: +// *number{.number}...{letter}{\_suffix{number}}...{~hash}{-r#}* +// +// Each *number* component is a sequence of digits (0-9). +// +// The *letter* portion can follow only after end of all the numeric +// version components. The *letter* is a single lower case letter (a-z). +// This can follow one or more *\_suffix{number}* components. The list +// of valid suffixes (and their sorting order) is: +// *alpha*, *beta*, *pre*, *rc*, , *cvs*, *svn*, *git*, *hg*, *p* +// +// This can be follows with an optional *{~hash}* to indicate a commit +// hash from where it was built. This can be any length string of +// lower case hexadecimal digits (0-9a-f). +// +// Finally, an optional package build component *-r{number}* can follow. +// +// Also see https://github.com/alpinelinux/apk-tools/blob/master/doc/apk-package.5.scd#package-info-metadata +type AlpineVersion struct { + // the original string that was parsed + original string + // whether the version was found to be invalid while parsing + invalid bool + // the remainder of the string after parsing has been completed + remainder string + // slice of number components which can be compared in a semver-like manner + components alpineNumberComponents + // optional single lower-case letter + letter string + // slice of one or more suffixes, prefixed with "_" and optionally followed by a number. + // + // supported suffixes and their sort order are: + // *alpha*, *beta*, *pre*, *rc*, , *cvs*, *svn*, *git*, *hg*, *p* + suffixes []alpineSuffix + // optional commit hash made up of any number of lower case hexadecimal digits (0-9a-f) + hash string + // prefixed with "-r{number}" + buildComponent *big.Int +} + +func (v AlpineVersion) compareComponents(w AlpineVersion) int { + numberOfComponents := maxInt(len(v.components), len(w.components)) + + for i := 0; i < numberOfComponents; i++ { + diff := v.components.Fetch(i).Cmp(w.components.Fetch(i)) + + if diff != 0 { + return diff + } + } + + return 0 +} + +func (v AlpineVersion) compareLetters(w AlpineVersion) int { + if v.letter == "" && w.letter != "" { + return -1 + } + if v.letter != "" && w.letter == "" { + return +1 + } + + return strings.Compare(v.letter, w.letter) +} + +func (v AlpineVersion) fetchSuffix(n int) alpineSuffix { + if len(v.suffixes) <= n { + return alpineSuffix{number: big.NewInt(0), weight: 5} + } + + return v.suffixes[n] +} + +func (as alpineSuffix) Cmp(bs alpineSuffix) int { + if as.weight > bs.weight { + return +1 + } + if as.weight < bs.weight { + return -1 + } + + return as.number.Cmp(bs.number) +} + +func (v AlpineVersion) compareSuffixes(w AlpineVersion) int { + numberOfSuffixes := maxInt(len(v.suffixes), len(w.suffixes)) + + for i := 0; i < numberOfSuffixes; i++ { + diff := v.fetchSuffix(i).Cmp(w.fetchSuffix(i)) + + if diff != 0 { + return diff + } + } + + return 0 +} + +func (v AlpineVersion) compareBuildComponents(w AlpineVersion) int { + if v.buildComponent != nil && w.buildComponent != nil { + if diff := v.buildComponent.Cmp(w.buildComponent); diff != 0 { + return diff + } + } + + return 0 +} + +func (v AlpineVersion) compareRemainder(w AlpineVersion) int { + if v.remainder == "" && w.remainder != "" { + return +1 + } + + if v.remainder != "" && w.remainder == "" { + return -1 + } + + return 0 +} + +func (v AlpineVersion) Compare(w AlpineVersion) int { + // if both versions are invalid, then just use a string compare + if v.invalid && w.invalid { + return strings.Compare(v.original, w.original) + } + + // note: commit hashes are ignored as we can't properly compare them + if diff := v.compareComponents(w); diff != 0 { + return diff + } + if diff := v.compareLetters(w); diff != 0 { + return diff + } + if diff := v.compareSuffixes(w); diff != 0 { + return diff + } + if diff := v.compareBuildComponents(w); diff != 0 { + return diff + } + if diff := v.compareRemainder(w); diff != 0 { + return diff + } + + return 0 +} + +func (v AlpineVersion) CompareStr(str string) int { + return v.Compare(parseAlpineVersion(str)) +} + +// parseAlpineNumberComponents parses the given string into AlpineVersion.components +// and then returns the remainder of the string for continued parsing. +// +// Each number component is a sequence of digits (0-9), separated with a ".", +// and with no limit on the value or amount of number components. +// +// This parser must be applied *before* any other parser. +func parseAlpineNumberComponents(v *AlpineVersion, str string) string { + sub := cachedregexp.MustCompile(`^((\d+)\.?)*`).FindString(str) + + for i, d := range strings.Split(sub, ".") { + v.components = append(v.components, alpineNumberComponent{ + value: convertToBigIntOrPanic(d), + index: i, + original: d, + }) + } + + return strings.TrimPrefix(str, sub) +} + +// parseAlpineLetter parses the given string into an AlpineVersion.letter +// and then returns the remainder of the string for continued parsing. +// +// The letter is optional, following after the numeric version components, and +// must be a single lower case letter (a-z). +// +// This parser must be applied *after* parseAlpineNumberComponents. +func parseAlpineLetter(v *AlpineVersion, str string) string { + if cachedregexp.MustCompile(`^[a-z]`).MatchString(str) { + v.letter = str[:1] + } + + return strings.TrimPrefix(str, v.letter) +} + +// parseAlpineSuffixes parses the given string into AlpineVersion.suffixes and +// then returns the remainder of the string for continued parsing. +// +// Suffixes begin with an "_" and may optionally end with a number. +// +// This parser must be applied *after* parseAlpineLetter. +func parseAlpineSuffixes(v *AlpineVersion, str string) string { + re := cachedregexp.MustCompile(`_(alpha|beta|pre|rc|cvs|svn|git|hg|p)(\d*)`) + + for _, match := range re.FindAllStringSubmatch(str, -1) { + if match[2] == "" { + match[2] = "0" + } + + v.suffixes = append(v.suffixes, alpineSuffix{ + weight: weightAlpineSuffixString(match[1]), + number: convertToBigIntOrPanic(match[2]), + }) + str = strings.TrimPrefix(str, match[0]) + } + + return str +} + +// parseAlpineHash parses the given string into AlpineVersion.hash and then returns +// the remainder of the string for continued parsing. +// +// The hash is an optional value representing a commit hash, which is a string of +// that starts with a "~" and is followed by any number of lower case hexadecimal +// digits (0-9a-f). +// +// This parser must be applied *after* parseAlpineSuffixes. +func parseAlpineHash(v *AlpineVersion, str string) string { + re := cachedregexp.MustCompile(`^~([0-9a-f]+)`) + + v.hash = re.FindString(str) + + return strings.TrimPrefix(str, v.hash) +} + +// parseAlpineBuildComponent parses the given string into AlpineVersion.buildComponent +// and then returns the remainder of the string for continued parsing. +// +// The build component is an optional value at the end of the version string which +// begins with "-r" followed by a number. +// +// This parser must be applied *after* parseAlpineBuildComponent +func parseAlpineBuildComponent(v *AlpineVersion, str string) string { + if str == "" { + return str + } + + re := cachedregexp.MustCompile(`^-r(\d*)`) + + matches := re.FindStringSubmatch(str) + + if matches == nil { + // since this is the last part of parsing, anything other than an empty string + // must match as a build component or otherwise the version is invalid + v.invalid = true + + return str + } + + if matches[1] == "" { + matches[1] = "0" + } + + v.buildComponent = convertToBigIntOrPanic(matches[1]) + + return strings.TrimPrefix(str, matches[0]) +} + +func parseAlpineVersion(str string) AlpineVersion { + v := AlpineVersion{original: str, buildComponent: new(big.Int)} + + str = parseAlpineNumberComponents(&v, str) + str = parseAlpineLetter(&v, str) + str = parseAlpineSuffixes(&v, str) + str = parseAlpineHash(&v, str) + str = parseAlpineBuildComponent(&v, str) + + v.remainder = str + + return v +} diff --git a/scripts/generators/generate-alpine-versions.py b/scripts/generators/generate-alpine-versions.py new file mode 100755 index 00000000000..9d8a969b546 --- /dev/null +++ b/scripts/generators/generate-alpine-versions.py @@ -0,0 +1,279 @@ +#!/usr/bin/env python3 + +import atexit +import json +import operator +import os +import subprocess +import sys +import urllib.request +import zipfile +from pathlib import Path + +# this requires being run on an OS with docker available to run an alpine container +# through which apk can be invoked to compare versions natively. +# +# this generator will attempt to run an alpine container in the background +# for the lifetime of the generator that will be used to exec apk; this is a lot faster +# than running a dedicated container for each invocation, but does mean the container +# may need to be cleaned up manually if the generator explodes in a way that prevents +# it from stopping the container before exiting. +# +# this generator also uses cache to store the results of comparisons given the large +# volume of packages and versions to compare, which is stored in the /tmp directory. + +# An array of version comparisons that are known to be unsupported and so +# should be commented out in the generated fixture. +# +# Generally this is because the native implementation has a suspected bug +# that causes the comparison to return incorrect results, and so supporting +# such comparisons in the detector would in fact be wrong. +UNSUPPORTED_COMPARISONS = [] + + +def is_unsupported_comparison(line): + return line in UNSUPPORTED_COMPARISONS + + +def uncomment(line): + if line.startswith("#"): + return line[1:] + if line.startswith("//"): + return line[2:] + return line + + +def download_alpine_db(): + urllib.request.urlretrieve("https://osv-vulnerabilities.storage.googleapis.com/Alpine/all.zip", "alpine-db.zip") + + +def extract_packages_with_versions(osvs): + dict = {} + + for osv in osvs: + for affected in osv['affected']: + if 'package' not in affected or not affected['package']['ecosystem'].startswith('Alpine'): + continue + + package = affected['package']['name'] + + if package not in dict: + dict[package] = [] + + for version in affected.get('versions', []): + dict[package].append(AlpineVersion(version)) + + # deduplicate and sort the versions for each package + for package in dict: + dict[package] = sorted(list(dict.fromkeys(dict[package]))) + + return dict + + +class AlpineVersionComparer: + def __init__(self, cache_path, how): + self.cache_path = Path(cache_path) + self.cache = {} + + self._alpine_version = "3.10" + self._compare_method = how + self._docker_container = None + self._load_cache() + + def _start_docker_container(self): + """ + Starts the Alpine docker container for use in comparing versions using apk, + assigning the name of the container to `self._docker_container` if success. + + If a container has already been started, this does nothing. + """ + + if self._docker_container is not None: + return + + container_name = f"alpine-{self._alpine_version}-container" + + cmd = ["docker", "run", "--rm", "--name", container_name, "-d", f"alpine:{self._alpine_version}", "tail", "-f", "/dev/null"] + out = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + + if out.returncode != 0: + raise Exception(f"failed to start {container_name} container: {out.stderr.decode('utf-8')}") + self._docker_container = container_name + atexit.register(self._stop_docker_container) + + def _stop_docker_container(self): + if self._docker_container is None: + raise Exception(f"called to stop docker container when none was started") + + cmd = ["docker", "stop", "-t", "0", self._docker_container] + out = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + + if out.returncode != 0: + raise Exception(f"failed to stop {self._docker_container} container: {out.stderr.decode('utf-8')}") + + def _load_cache(self): + if self.cache_path: + self.cache_path.touch() + with open(self.cache_path, "r") as f: + lines = f.readlines() + + for line in lines: + line = line.strip() + key, result = line.split(",") + + if result == "True": + self.cache[key] = True + continue + if result == "False": + self.cache[key] = False + continue + + print(f"ignoring invalid cache entry '{line}'") + + def _save_to_cache(self, key, result): + self.cache[key] = result + if self.cache_path: + self.cache_path.touch() + with open(self.cache_path, "a") as f: + f.write(f"{key},{result}\n") + + def _compare_command(self, a, b): + if self._compare_method == "run": + return ["docker", "run", "--rm", f"alpine:{self._alpine_version}", "apk", "version", "-t", a, b] + + self._start_docker_container() + + return ["docker", "exec", self._docker_container, "apk", "version", "-t", a, b] + + def compare(self, a, op, b): + key = f"{a} {op} {b}" + if key in self.cache: + return self.cache[key] + + out = subprocess.run(self._compare_command(a, b), stdout=subprocess.PIPE, stderr=subprocess.PIPE) + + if out.returncode != 0: + raise Exception(f"apk did not like comparing {a} {op} {b}: {out.stderr.decode('utf-8')}") + + r = out.stdout.decode('utf-8').strip() == op + self._save_to_cache(key, r) + return r + + +alpine_comparer = AlpineVersionComparer("/tmp/alpine-versions-generator-cache.csv", "exec") + + +class AlpineVersion: + def __str__(self): + return self.version + + def __hash__(self): + return hash(self.version) + + def __init__(self, version): + self.version = version + + def __lt__(self, other): + return alpine_comparer.compare(self.version, '<', other.version) + + def __gt__(self, other): + return alpine_comparer.compare(self.version, '>', other.version) + + def __eq__(self, other): + return alpine_comparer.compare(self.version, '=', other.version) + + +def compare(v1, relate, v2): + ops = {'<': operator.lt, '=': operator.eq, '>': operator.gt} + return ops[relate](v1, v2) + + +def compare_versions(lines, select="all"): + has_any_failed = False + + for line in lines: + line = line.strip() + + if line == "" or line.startswith('#') or line.startswith('//'): + maybe_unsupported = uncomment(line).strip() + + if is_unsupported_comparison(maybe_unsupported): + print(f"\033[96mS\033[0m: \033[93m{maybe_unsupported}\033[0m") + continue + + v1, op, v2 = line.strip().split(" ") + + r = compare(AlpineVersion(v1), op, AlpineVersion(v2)) + + if not r: + has_any_failed = r + + if select == "failures" and r: + continue + + if select == "successes" and not r: + continue + + color = '\033[92m' if r else '\033[91m' + rs = "T" if r else "F" + print(f"{color}{rs}\033[0m: \033[93m{line}\033[0m") + return has_any_failed + + +def compare_versions_in_file(filepath, select="all"): + with open(filepath) as f: + lines = f.readlines() + return compare_versions(lines, select) + + +def generate_version_compares(versions): + comparisons = [] + for i, version in enumerate(versions): + if i == 0: + continue + + comparison = f"{versions[i - 1]} < {version}\n" + + if is_unsupported_comparison(comparison.strip()): + comparison = "# " + comparison + comparisons.append(comparison) + return comparisons + + +def generate_package_compares(packages): + comparisons = [] + for package in packages: + versions = packages[package] + comparisons.extend(generate_version_compares(versions)) + + # return comparisons + return list(dict.fromkeys(comparisons)) + + +def fetch_packages_versions(): + download_alpine_db() + osvs = [] + + with zipfile.ZipFile('alpine-db.zip') as db: + for fname in db.namelist(): + with db.open(fname) as osv: + osvs.append(json.loads(osv.read().decode('utf-8'))) + + return extract_packages_with_versions(osvs) + + +outfile = "internal/semantic/fixtures/alpine-versions-generated.txt" + +packs = fetch_packages_versions() +with open(outfile, "w") as f: + f.writelines(generate_package_compares(packs)) + f.write("\n") + +# set this to either "failures" or "successes" to only have those comparison results +# printed; setting it to anything else will have all comparison results printed +show = os.environ.get("VERSION_GENERATOR_PRINT", "failures") + +did_any_fail = compare_versions_in_file(outfile, show) + +if did_any_fail: + sys.exit(1) From 18e4585751db9e31e403a800a5a0fd8f359f5dea Mon Sep 17 00:00:00 2001 From: Rex P <106129829+another-rex@users.noreply.github.com> Date: Tue, 28 May 2024 14:36:23 +1000 Subject: [PATCH 54/68] Update typo in supported_languages_and_lockfiles.md (#998) --- docs/supported_languages_and_lockfiles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/supported_languages_and_lockfiles.md b/docs/supported_languages_and_lockfiles.md index 4e4a16fb028..af0c2d54ac7 100644 --- a/docs/supported_languages_and_lockfiles.md +++ b/docs/supported_languages_and_lockfiles.md @@ -36,7 +36,7 @@ A wide range of lockfiles are supported by utilizing this [lockfile package](htt | Ruby | `Gemfile.lock` | | Rust | `Cargo.lock` | -## Alpine Package Keeper and Debian Package Keeper +## Alpine Package Keeper and Debian Package Manager The scanner also supports: From 86144006b05f09c1f0aa986d9c4c219f5d97c965 Mon Sep 17 00:00:00 2001 From: Rex P <106129829+another-rex@users.noreply.github.com> Date: Thu, 30 May 2024 10:34:17 +1000 Subject: [PATCH 55/68] V1.7.4 changelog (#1001) Pre Release edits for v1.7.4 --- CHANGELOG.md | 11 +++ cmd/osv-scanner/__snapshots__/main_test.snap | 8 +-- internal/output/__snapshots__/sarif_test.snap | 68 +++++++++---------- internal/version/version.go | 2 +- 4 files changed, 50 insertions(+), 39 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f968332b7b5..679e2855fc9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ +# v1.7.4: + +### Features: + +- [Feature #980](https://github.com/google/osv-scanner/pull/980) Support comparing alpine package versions locally. (Using --experimental-local-db can now scan alpine packages) +- [Feature #943](https://github.com/google/osv-scanner/pull/943) Support scanning gradle/verification-metadata.xml files. + +### Misc: + +- [Bug #968](https://github.com/google/osv-scanner/issues/968) Hide unimportant Debian vulnerabilities to reduce noise. + # v1.7.3: ### Features: diff --git a/cmd/osv-scanner/__snapshots__/main_test.snap b/cmd/osv-scanner/__snapshots__/main_test.snap index 7fb239f189d..d734f1e5b8f 100755 --- a/cmd/osv-scanner/__snapshots__/main_test.snap +++ b/cmd/osv-scanner/__snapshots__/main_test.snap @@ -9,7 +9,7 @@ No package sources found, --help for usage information. --- [TestRun/#01 - 1] -osv-scanner version: 1.7.3 +osv-scanner version: 1.7.4 commit: n/a built at: n/a @@ -102,7 +102,7 @@ Scanned /fixtures/locks-many/composer.lock file and found 1 package "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.3" + "version": "1.7.4" } }, "results": [] @@ -172,7 +172,7 @@ Loaded filter from: /fixtures/go-project/osv-scanner.toml } } ], - "version": "1.7.3" + "version": "1.7.4" } }, "artifacts": [ @@ -517,7 +517,7 @@ Scanned /fixtures/locks-insecure/osv-scanner-flutter-deps.json file as } } ], - "version": "1.7.3" + "version": "1.7.4" } }, "artifacts": [ diff --git a/internal/output/__snapshots__/sarif_test.snap b/internal/output/__snapshots__/sarif_test.snap index 629d95fb3d9..42ef35b5baf 100755 --- a/internal/output/__snapshots__/sarif_test.snap +++ b/internal/output/__snapshots__/sarif_test.snap @@ -62,7 +62,7 @@ } } ], - "version": "1.7.3" + "version": "1.7.4" } }, "artifacts": [ @@ -149,7 +149,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.3" + "version": "1.7.4" } }, "results": [] @@ -170,7 +170,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.3" + "version": "1.7.4" } }, "results": [] @@ -191,7 +191,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.3" + "version": "1.7.4" } }, "results": [] @@ -212,7 +212,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.3" + "version": "1.7.4" } }, "results": [] @@ -233,7 +233,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.3" + "version": "1.7.4" } }, "results": [] @@ -254,7 +254,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.3" + "version": "1.7.4" } }, "results": [] @@ -275,7 +275,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.3" + "version": "1.7.4" } }, "results": [] @@ -296,7 +296,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.3" + "version": "1.7.4" } }, "results": [] @@ -317,7 +317,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.3" + "version": "1.7.4" } }, "results": [] @@ -338,7 +338,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.3" + "version": "1.7.4" } }, "results": [] @@ -359,7 +359,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.3" + "version": "1.7.4" } }, "results": [] @@ -380,7 +380,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.3" + "version": "1.7.4" } }, "results": [] @@ -401,7 +401,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.3" + "version": "1.7.4" } }, "results": [] @@ -422,7 +422,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.3" + "version": "1.7.4" } }, "results": [] @@ -443,7 +443,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.3" + "version": "1.7.4" } }, "results": [] @@ -501,7 +501,7 @@ } } ], - "version": "1.7.3" + "version": "1.7.4" } }, "artifacts": [ @@ -613,7 +613,7 @@ } } ], - "version": "1.7.3" + "version": "1.7.4" } }, "artifacts": [ @@ -679,7 +679,7 @@ } } ], - "version": "1.7.3" + "version": "1.7.4" } }, "artifacts": [ @@ -799,7 +799,7 @@ } } ], - "version": "1.7.3" + "version": "1.7.4" } }, "artifacts": [ @@ -1010,7 +1010,7 @@ } } ], - "version": "1.7.3" + "version": "1.7.4" } }, "artifacts": [ @@ -1148,7 +1148,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.3" + "version": "1.7.4" } }, "results": [] @@ -1206,7 +1206,7 @@ } } ], - "version": "1.7.3" + "version": "1.7.4" } }, "artifacts": [ @@ -1372,7 +1372,7 @@ } } ], - "version": "1.7.3" + "version": "1.7.4" } }, "artifacts": [ @@ -1510,7 +1510,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.3" + "version": "1.7.4" } }, "results": [] @@ -1531,7 +1531,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.3" + "version": "1.7.4" } }, "results": [] @@ -1552,7 +1552,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.3" + "version": "1.7.4" } }, "results": [] @@ -1573,7 +1573,7 @@ "informationUri": "https://github.com/google/osv-scanner", "name": "osv-scanner", "rules": [], - "version": "1.7.3" + "version": "1.7.4" } }, "results": [] @@ -1613,7 +1613,7 @@ } } ], - "version": "1.7.3" + "version": "1.7.4" } }, "artifacts": [ @@ -1679,7 +1679,7 @@ } } ], - "version": "1.7.3" + "version": "1.7.4" } }, "artifacts": [ @@ -1746,7 +1746,7 @@ } } ], - "version": "1.7.3" + "version": "1.7.4" } }, "artifacts": [ @@ -1847,7 +1847,7 @@ } } ], - "version": "1.7.3" + "version": "1.7.4" } }, "artifacts": [ @@ -1930,7 +1930,7 @@ } } ], - "version": "1.7.3" + "version": "1.7.4" } }, "artifacts": [ @@ -1996,7 +1996,7 @@ } } ], - "version": "1.7.3" + "version": "1.7.4" } }, "artifacts": [ diff --git a/internal/version/version.go b/internal/version/version.go index a280cb9fe67..e266effc325 100644 --- a/internal/version/version.go +++ b/internal/version/version.go @@ -1,4 +1,4 @@ package version // OSVVersion is the current release version, you should update this variable when doing a release -var OSVVersion = "1.7.3" +var OSVVersion = "1.7.4" From d4657bf46aea52834c5148b25fb6cab132c69af5 Mon Sep 17 00:00:00 2001 From: Rex P <106129829+another-rex@users.noreply.github.com> Date: Thu, 30 May 2024 11:31:33 +1000 Subject: [PATCH 56/68] Remove feature from changelog as it's still blocked on #769 (#1006) Remove feature from changelog as it's still blocked on #769 --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 679e2855fc9..6824f7fee11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,6 @@ ### Features: -- [Feature #980](https://github.com/google/osv-scanner/pull/980) Support comparing alpine package versions locally. (Using --experimental-local-db can now scan alpine packages) - [Feature #943](https://github.com/google/osv-scanner/pull/943) Support scanning gradle/verification-metadata.xml files. ### Misc: From e94c6b58f423c6dc1933e1aa2ece515505ca16d7 Mon Sep 17 00:00:00 2001 From: Xueqin Cui <72771658+cuixq@users.noreply.github.com> Date: Thu, 30 May 2024 13:54:32 +1000 Subject: [PATCH 57/68] Do not record Maven `compile` scope in dependency groups (#1003) We should only record non-default dependency groups. For Maven, `compile` is the default scope so it should not be recorded. https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#dependency-scope --- pkg/lockfile/fixtures/maven/with-scope.xml | 6 ++++++ pkg/lockfile/parse-maven-lock.go | 10 ++++++---- pkg/lockfile/parse-maven-lock_test.go | 6 ++++++ 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/pkg/lockfile/fixtures/maven/with-scope.xml b/pkg/lockfile/fixtures/maven/with-scope.xml index 179b05a3175..99471fbfba0 100644 --- a/pkg/lockfile/fixtures/maven/with-scope.xml +++ b/pkg/lockfile/fixtures/maven/with-scope.xml @@ -1,5 +1,11 @@ + + abc + xyz + 1.2.3 + compile + junit junit diff --git a/pkg/lockfile/parse-maven-lock.go b/pkg/lockfile/parse-maven-lock.go index 49f9c2b810f..6e7b9404751 100644 --- a/pkg/lockfile/parse-maven-lock.go +++ b/pkg/lockfile/parse-maven-lock.go @@ -130,8 +130,9 @@ func (e MavenLockExtractor) Extract(f DepFile) ([]PackageDetails, error) { Ecosystem: MavenEcosystem, CompareAs: MavenEcosystem, } - if strings.TrimSpace(lockPackage.Scope) != "" { - pkgDetails.DepGroups = append(pkgDetails.DepGroups, lockPackage.Scope) + if scope := strings.TrimSpace(lockPackage.Scope); scope != "" && scope != "compile" { + // Only append non-default scope (compile is the default scope). + pkgDetails.DepGroups = append(pkgDetails.DepGroups, scope) } details[finalName] = pkgDetails } @@ -145,8 +146,9 @@ func (e MavenLockExtractor) Extract(f DepFile) ([]PackageDetails, error) { Ecosystem: MavenEcosystem, CompareAs: MavenEcosystem, } - if strings.TrimSpace(lockPackage.Scope) != "" { - pkgDetails.DepGroups = append(pkgDetails.DepGroups, lockPackage.Scope) + if scope := strings.TrimSpace(lockPackage.Scope); scope != "" && scope != "compile" { + // Only append non-default scope (compile is the default scope). + pkgDetails.DepGroups = append(pkgDetails.DepGroups, scope) } details[finalName] = pkgDetails } diff --git a/pkg/lockfile/parse-maven-lock_test.go b/pkg/lockfile/parse-maven-lock_test.go index ccabd8cf098..81b765ac01b 100644 --- a/pkg/lockfile/parse-maven-lock_test.go +++ b/pkg/lockfile/parse-maven-lock_test.go @@ -301,6 +301,12 @@ func TestParseMavenLock_WithScope(t *testing.T) { } expectPackages(t, packages, []lockfile.PackageDetails{ + { + Name: "abc:xyz", + Version: "1.2.3", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, { Name: "junit:junit", Version: "4.12", From 854cb01164a268fdff27e5358ef946c15c51ab37 Mon Sep 17 00:00:00 2001 From: Xueqin Cui <72771658+cuixq@users.noreply.github.com> Date: Thu, 30 May 2024 14:16:14 +1000 Subject: [PATCH 58/68] Maven standard dependencies should take precedence over managed dependencies (#1000) Managed dependencies are not real dependencies so they should not take precedence over standard dependencies. Dependency management is used to control the versions of artifacts used in transitive dependencies. https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Management Also, version requirements in managed dependencies are only referred when the requirement is not defined for that dependency in standard dependencies section. --- pkg/lockfile/parse-maven-lock.go | 8 ++++---- pkg/lockfile/parse-maven-lock_test.go | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/lockfile/parse-maven-lock.go b/pkg/lockfile/parse-maven-lock.go index 6e7b9404751..62ef6efc23b 100644 --- a/pkg/lockfile/parse-maven-lock.go +++ b/pkg/lockfile/parse-maven-lock.go @@ -121,9 +121,8 @@ func (e MavenLockExtractor) Extract(f DepFile) ([]PackageDetails, error) { details := map[string]PackageDetails{} - for _, lockPackage := range parsedLockfile.Dependencies { + for _, lockPackage := range parsedLockfile.ManagedDependencies { finalName := lockPackage.GroupID + ":" + lockPackage.ArtifactID - pkgDetails := PackageDetails{ Name: finalName, Version: lockPackage.ResolveVersion(*parsedLockfile), @@ -137,9 +136,10 @@ func (e MavenLockExtractor) Extract(f DepFile) ([]PackageDetails, error) { details[finalName] = pkgDetails } - // managed dependencies take precedent over standard dependencies - for _, lockPackage := range parsedLockfile.ManagedDependencies { + // standard dependencies take precedent over managed dependencies + for _, lockPackage := range parsedLockfile.Dependencies { finalName := lockPackage.GroupID + ":" + lockPackage.ArtifactID + pkgDetails := PackageDetails{ Name: finalName, Version: lockPackage.ResolveVersion(*parsedLockfile), diff --git a/pkg/lockfile/parse-maven-lock_test.go b/pkg/lockfile/parse-maven-lock_test.go index 81b765ac01b..421704779cd 100644 --- a/pkg/lockfile/parse-maven-lock_test.go +++ b/pkg/lockfile/parse-maven-lock_test.go @@ -154,7 +154,7 @@ func TestParseMavenLock_WithDependencyManagement(t *testing.T) { expectPackages(t, packages, []lockfile.PackageDetails{ { Name: "io.netty:netty-all", - Version: "4.1.42.Final", + Version: "4.1.9", Ecosystem: lockfile.MavenEcosystem, CompareAs: lockfile.MavenEcosystem, }, From b60b59412668e05a39606b3979c369ecf6965fa3 Mon Sep 17 00:00:00 2001 From: Rex P <106129829+another-rex@users.noreply.github.com> Date: Fri, 31 May 2024 11:56:49 +1000 Subject: [PATCH 59/68] Select a version that actually exists (#1012) The version of zlib (in the purl) seems to be randomly selected for testing purposes (1.2.10-r2), as it doesn't match the rest of the SBOM. The problem is that a particular version never existed, and only showed up because it was incorrectly enumerated in osv.dev. Now that the version enumeration has been fixed it causes different results to show up in the testing snapshot. This PR makes all the version numbers for zlib in the SBOM consistent, and sets it to `1.2.10-r0` which actually exists. (And the snapshot will not change when the fixed alpine enumeration moves to production.) --- cmd/osv-scanner/__snapshots__/main_test.snap | 6 ++++-- cmd/osv-scanner/fixtures/sbom-insecure/alpine.cdx.xml | 8 ++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/cmd/osv-scanner/__snapshots__/main_test.snap b/cmd/osv-scanner/__snapshots__/main_test.snap index d734f1e5b8f..0fe1c8dd693 100755 --- a/cmd/osv-scanner/__snapshots__/main_test.snap +++ b/cmd/osv-scanner/__snapshots__/main_test.snap @@ -251,7 +251,8 @@ Scanned /fixtures/sbom-insecure/postgres-stretch.cdx.xml as CycloneDX S +-------------------------------------+------+-----------+--------------------------------+------------------------------------+-------------------------------------------------+ | OSV URL | CVSS | ECOSYSTEM | PACKAGE | VERSION | SOURCE | +-------------------------------------+------+-----------+--------------------------------+------------------------------------+-------------------------------------------------+ -| https://osv.dev/CVE-2022-37434 | 9.8 | Alpine | zlib | 1.2.10-r2 | fixtures/sbom-insecure/alpine.cdx.xml | +| https://osv.dev/CVE-2018-25032 | 7.5 | Alpine | zlib | 1.2.10-r0 | fixtures/sbom-insecure/alpine.cdx.xml | +| https://osv.dev/CVE-2022-37434 | 9.8 | Alpine | zlib | 1.2.10-r0 | fixtures/sbom-insecure/alpine.cdx.xml | | https://osv.dev/DLA-3022-1 | | Debian | dpkg | 1.18.25 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | | https://osv.dev/GHSA-v95c-p5hm-xq8f | 6.0 | Go | github.com/opencontainers/runc | v1.0.1 | fixtures/sbom-insecure/postgres-stretch.cdx.xml | | https://osv.dev/GO-2022-0274 | | | | | | @@ -372,7 +373,8 @@ Scanned /fixtures/sbom-insecure/alpine.cdx.xml as CycloneDX SBOM and fo +--------------------------------+------+-----------+---------+-----------+---------------------------------------+ | OSV URL | CVSS | ECOSYSTEM | PACKAGE | VERSION | SOURCE | +--------------------------------+------+-----------+---------+-----------+---------------------------------------+ -| https://osv.dev/CVE-2022-37434 | 9.8 | Alpine | zlib | 1.2.10-r2 | fixtures/sbom-insecure/alpine.cdx.xml | +| https://osv.dev/CVE-2018-25032 | 7.5 | Alpine | zlib | 1.2.10-r0 | fixtures/sbom-insecure/alpine.cdx.xml | +| https://osv.dev/CVE-2022-37434 | 9.8 | Alpine | zlib | 1.2.10-r0 | fixtures/sbom-insecure/alpine.cdx.xml | +--------------------------------+------+-----------+---------+-----------+---------------------------------------+ --- diff --git a/cmd/osv-scanner/fixtures/sbom-insecure/alpine.cdx.xml b/cmd/osv-scanner/fixtures/sbom-insecure/alpine.cdx.xml index 1b813559895..b95886d217a 100644 --- a/cmd/osv-scanner/fixtures/sbom-insecure/alpine.cdx.xml +++ b/cmd/osv-scanner/fixtures/sbom-insecure/alpine.cdx.xml @@ -549,18 +549,18 @@ 4929
- + Natanael Copa <ncopa@alpinelinux.org> zlib - 1.2.13-r0 + 1.2.10-r0 A compression/decompression Library Zlib - cpe:2.3:a:zlib:zlib:1.2.13-r0:*:*:*:*:*:*:* - pkg:apk/alpine/zlib@1.2.10-r2?arch=x86_64&upstream=zlib&distro=alpine-3.17.2 + cpe:2.3:a:zlib:zlib:1.2.10-r0:*:*:*:*:*:*:* + pkg:apk/alpine/zlib@1.2.10-r0?arch=x86_64&upstream=zlib&distro=alpine-3.17.2 https://zlib.net/ From f2a30a849a355eaaa9f3492da64afbf31ae222b2 Mon Sep 17 00:00:00 2001 From: Xueqin Cui <72771658+cuixq@users.noreply.github.com> Date: Fri, 31 May 2024 17:55:28 +1000 Subject: [PATCH 60/68] Transitive dependency support for Maven pom.xml (#1002) Issue https://github.com/google/osv-scanner/issues/35 In this PR, the new Maven extractor invokes Maven resolver to compute the transitive dependencies of a Maven pom.xml. Since managed dependencies are not actually being depended on, they are not in the resolved dependency graph, and thus they are not included in the scan results. --- .../manifest/fixtures/maven/interpolation.xml | 15 +- .../manifest/fixtures/maven/one-package.xml | 4 + .../manifest/fixtures/maven/transitive.xml | 18 +++ .../manifest/fixtures/maven/two-packages.xml | 4 + .../maven/with-dependency-management.xml | 4 + .../manifest/fixtures/maven/with-scope.xml | 6 +- .../fixtures/universe/basic-universe.yaml | 42 ++++++ internal/manifest/maven.go | 128 +++++++--------- internal/manifest/maven_test.go | 142 +++++++----------- 9 files changed, 195 insertions(+), 168 deletions(-) create mode 100644 internal/manifest/fixtures/maven/transitive.xml create mode 100644 internal/manifest/fixtures/universe/basic-universe.yaml diff --git a/internal/manifest/fixtures/maven/interpolation.xml b/internal/manifest/fixtures/maven/interpolation.xml index eb783c8e710..6b7f761afc6 100644 --- a/internal/manifest/fixtures/maven/interpolation.xml +++ b/internal/manifest/fixtures/maven/interpolation.xml @@ -26,15 +26,12 @@ my.package ${my.package.version} + + + org.mine + ranged-package + ${version-range} + - - - - org.mine - ranged-package - ${version-range} - - - diff --git a/internal/manifest/fixtures/maven/one-package.xml b/internal/manifest/fixtures/maven/one-package.xml index 4d9618b3e9c..bbb1359e9d5 100644 --- a/internal/manifest/fixtures/maven/one-package.xml +++ b/internal/manifest/fixtures/maven/one-package.xml @@ -1,4 +1,8 @@ + com.mycompany.app + my-app + 1.0 + 3.0 diff --git a/internal/manifest/fixtures/maven/transitive.xml b/internal/manifest/fixtures/maven/transitive.xml new file mode 100644 index 00000000000..2170738e33f --- /dev/null +++ b/internal/manifest/fixtures/maven/transitive.xml @@ -0,0 +1,18 @@ + + com.mycompany.app + my-app + 1.0 + + + + org.direct + alice + 1.0.0 + + + org.direct + bob + 2.0.0 + + + diff --git a/internal/manifest/fixtures/maven/two-packages.xml b/internal/manifest/fixtures/maven/two-packages.xml index f5f0a98bfef..897f648a1e4 100644 --- a/internal/manifest/fixtures/maven/two-packages.xml +++ b/internal/manifest/fixtures/maven/two-packages.xml @@ -1,4 +1,8 @@ + com.mycompany.app + my-app + 1.0 + 3.0 diff --git a/internal/manifest/fixtures/maven/with-dependency-management.xml b/internal/manifest/fixtures/maven/with-dependency-management.xml index 76f419c16d5..1928688e949 100644 --- a/internal/manifest/fixtures/maven/with-dependency-management.xml +++ b/internal/manifest/fixtures/maven/with-dependency-management.xml @@ -1,4 +1,8 @@ + com.mycompany.app + my-app + 1.0 + 3.0 diff --git a/internal/manifest/fixtures/maven/with-scope.xml b/internal/manifest/fixtures/maven/with-scope.xml index 179b05a3175..688c6bb7bc2 100644 --- a/internal/manifest/fixtures/maven/with-scope.xml +++ b/internal/manifest/fixtures/maven/with-scope.xml @@ -1,10 +1,14 @@ + com.mycompany.app + my-app + 1.0 + junit junit 4.12 - test + runtime diff --git a/internal/manifest/fixtures/universe/basic-universe.yaml b/internal/manifest/fixtures/universe/basic-universe.yaml new file mode 100644 index 00000000000..4252d450eee --- /dev/null +++ b/internal/manifest/fixtures/universe/basic-universe.yaml @@ -0,0 +1,42 @@ +system: maven +schema: | + com.google.code.findbugs:jsr305 + 3.0.2 + io.netty:netty-all + 4.1.9 + 4.1.42.Final + junit:junit + 4.12 + org.apache.maven:maven-artifact + 1.0.0 + org.direct:alice + 1.0.0 + org.transitive:chuck@1.1.1 + org.transitive:dave@2.2.2 + org.direct:bob + 2.0.0 + org.transitive:eve@3.3.3 + org.mine:my.package + 2.3.4 + org.mine:mypackage + 1.0.0 + org.mine:ranged-package + 9.4.35 + 9.4.36 + 9.4.37 + 9.5 + org.slf4j:slf4j-log4j12 + 1.7.25 + org.transitive:chuck + 1.1.1 + 2.2.2 + org.transitive:eve@2.2.2 + 3.3.3 + org.transitive:dave + 1.1.1 + 2.2.2 + 3.3.3 + org.transitive:eve + 1.1.1 + 2.2.2 + 3.3.3 diff --git a/internal/manifest/maven.go b/internal/manifest/maven.go index 8c6a191e38f..bd1bfcd344c 100644 --- a/internal/manifest/maven.go +++ b/internal/manifest/maven.go @@ -6,15 +6,18 @@ import ( "fmt" "path/filepath" - depsdevpb "deps.dev/api/v3" "deps.dev/util/maven" - "deps.dev/util/semver" + "deps.dev/util/resolve" + "deps.dev/util/resolve/dep" + mavenresolve "deps.dev/util/resolve/maven" + "github.com/google/osv-scanner/internal/resolution/client" + "github.com/google/osv-scanner/internal/resolution/util" "github.com/google/osv-scanner/pkg/lockfile" "golang.org/x/exp/maps" ) type MavenResolverExtractor struct { - Client depsdevpb.InsightsClient + client.DependencyClient } func (e MavenResolverExtractor) ShouldExtract(path string) bool { @@ -32,91 +35,72 @@ func (e MavenResolverExtractor) Extract(f lockfile.DepFile) ([]lockfile.PackageD return []lockfile.PackageDetails{}, fmt.Errorf("could not interpolate Maven project %s: %w", project.ProjectKey.Name(), err) } - details := map[string]lockfile.PackageDetails{} - - for _, dep := range project.Dependencies { - name := dep.Name() - v, err := e.resolveVersion(ctx, dep) - if err != nil { - return []lockfile.PackageDetails{}, err - } - pkgDetails := lockfile.PackageDetails{ - Name: name, - Version: v, - Ecosystem: lockfile.MavenEcosystem, - CompareAs: lockfile.MavenEcosystem, - } - if dep.Scope != "" { - pkgDetails.DepGroups = append(pkgDetails.DepGroups, string(dep.Scope)) - } - // A dependency may be declared more than one times, we keep the details - // from the last declared one as what `mvn` does. - details[name] = pkgDetails - } - - // managed dependencies take precedent over standard dependencies - for _, dep := range project.DependencyManagement.Dependencies { - name := dep.Name() - v, err := e.resolveVersion(ctx, dep) - if err != nil { - return []lockfile.PackageDetails{}, err - } - pkgDetails := lockfile.PackageDetails{ - Name: name, - Version: v, - Ecosystem: lockfile.MavenEcosystem, - CompareAs: lockfile.MavenEcosystem, - } - if dep.Scope != "" { - pkgDetails.DepGroups = append(pkgDetails.DepGroups, string(dep.Scope)) + overrideClient := client.NewOverrideClient(e.DependencyClient) + resolver := mavenresolve.NewResolver(overrideClient) + + // Resolve the dependencies. + root := resolve.Version{ + VersionKey: resolve.VersionKey{ + PackageKey: resolve.PackageKey{ + System: resolve.Maven, + Name: project.ProjectKey.Name(), + }, + VersionType: resolve.Concrete, + Version: string(project.Version), + }} + reqs := make([]resolve.RequirementVersion, len(project.Dependencies)) + for i, d := range project.Dependencies { + reqs[i] = resolve.RequirementVersion{ + VersionKey: resolve.VersionKey{ + PackageKey: resolve.PackageKey{ + System: resolve.Maven, + Name: d.Name(), + }, + VersionType: resolve.Requirement, + Version: string(d.Version), + }, + Type: resolve.MavenDepType(d, ""), } - // A dependency may be declared more than one times, we keep the details - // from the last declared one as what `mvn` does. - details[name] = pkgDetails } + overrideClient.AddVersion(root, reqs) - return maps.Values(details), nil -} - -func (e MavenResolverExtractor) resolveVersion(ctx context.Context, dep maven.Dependency) (string, error) { - constraint, err := semver.Maven.ParseConstraint(string(dep.Version)) + g, err := resolver.Resolve(ctx, root.VersionKey) if err != nil { - return "", fmt.Errorf("failed parsing Maven constraint %s: %w", dep.Version, err) - } - if constraint.IsSimple() { - // Return the constraint if it is a simple version string. - return constraint.String(), nil + return []lockfile.PackageDetails{}, fmt.Errorf("failed resolving %v: %w", root, err) } - - // Otherwise return the greatest version matching the constraint. - // TODO: invoke Maven resolver to decide the exact version. - resp, err := e.Client.GetPackage(ctx, &depsdevpb.GetPackageRequest{ - PackageKey: &depsdevpb.PackageKey{ - System: depsdevpb.System_MAVEN, - Name: dep.Name(), - }, - }) - if err != nil { - return "", fmt.Errorf("requesting versions of Maven package %s: %w", dep.Name(), err) + for i, e := range g.Edges { + e.Type = dep.Type{} + g.Edges[i] = e } - var result *semver.Version - for _, ver := range resp.GetVersions() { - v, _ := semver.Maven.Parse(ver.GetVersionKey().GetVersion()) - if constraint.MatchVersion(v) && result.Compare(v) < 0 { - result = v + details := map[string]lockfile.PackageDetails{} + for i := 1; i < len(g.Nodes); i++ { + // Ignore the first node which is the root. + node := g.Nodes[i] + pkgDetails := util.VKToPackageDetails(node.Version) + // We are only able to know dependency groups of direct dependencies but + // not transitive dependencies because the nodes in the resolve graph does + // not have the scope information. + for _, dep := range project.Dependencies { + if dep.Name() != pkgDetails.Name { + continue + } + if dep.Scope != "" && dep.Scope != "compile" { + pkgDetails.DepGroups = append(pkgDetails.DepGroups, string(dep.Scope)) + } } + details[pkgDetails.Name] = pkgDetails } - return result.String(), nil + return maps.Values(details), nil } -func ParseMavenWithResolver(depsdev depsdevpb.InsightsClient, pathToLockfile string) ([]lockfile.PackageDetails, error) { +func ParseMavenWithResolver(depClient client.DependencyClient, pathToLockfile string) ([]lockfile.PackageDetails, error) { f, err := lockfile.OpenLocalDepFile(pathToLockfile) if err != nil { return []lockfile.PackageDetails{}, err } defer f.Close() - return MavenResolverExtractor{Client: depsdev}.Extract(f) + return MavenResolverExtractor{DependencyClient: depClient}.Extract(f) } diff --git a/internal/manifest/maven_test.go b/internal/manifest/maven_test.go index a75a34658c1..06a8665922b 100644 --- a/internal/manifest/maven_test.go +++ b/internal/manifest/maven_test.go @@ -1,80 +1,14 @@ package manifest_test import ( - "context" - "errors" "io/fs" "testing" - depsdevpb "deps.dev/api/v3" "github.com/google/osv-scanner/internal/manifest" + "github.com/google/osv-scanner/internal/resolution/clienttest" "github.com/google/osv-scanner/pkg/lockfile" - "google.golang.org/grpc" ) -type fakeDepsDevClient struct { - depsdevpb.InsightsClient -} - -func (c *fakeDepsDevClient) GetPackage(ctx context.Context, in *depsdevpb.GetPackageRequest, opts ...grpc.CallOption) (*depsdevpb.Package, error) { - if in.GetPackageKey().GetName() == "org.mine:ranged-package" { - return &depsdevpb.Package{ - Versions: []*depsdevpb.Package_Version{ - { - VersionKey: &depsdevpb.VersionKey{ - Version: "9.4.35", - }, - }, - { - VersionKey: &depsdevpb.VersionKey{ - Version: "9.4.36", - }, - }, - { - VersionKey: &depsdevpb.VersionKey{ - Version: "9.4.37", - }, - }, - { - VersionKey: &depsdevpb.VersionKey{ - Version: "9.5", - }, - }, - }, - }, nil - } - - return nil, errors.New("package not found") -} - -func (c *fakeDepsDevClient) GetVersion(ctx context.Context, in *depsdevpb.GetVersionRequest, opts ...grpc.CallOption) (*depsdevpb.Version, error) { - return nil, errors.New("not implemented") -} - -func (c *fakeDepsDevClient) GetRequirements(ctx context.Context, in *depsdevpb.GetRequirementsRequest, opts ...grpc.CallOption) (*depsdevpb.Requirements, error) { - return nil, errors.New("not implemented") -} - -func (c *fakeDepsDevClient) GetDependencies(ctx context.Context, in *depsdevpb.GetDependenciesRequest, opts ...grpc.CallOption) (*depsdevpb.Dependencies, error) { - return nil, errors.New("not implemented") -} - -func (c *fakeDepsDevClient) GetProject(ctx context.Context, in *depsdevpb.GetProjectRequest, opts ...grpc.CallOption) (*depsdevpb.Project, error) { - return nil, errors.New("not implemented") -} - -func (c *fakeDepsDevClient) GetProjectPackageVersions(ctx context.Context, in *depsdevpb.GetProjectPackageVersionsRequest, opts ...grpc.CallOption) (*depsdevpb.ProjectPackageVersions, error) { - return nil, errors.New("not implemented") -} - -func (c *fakeDepsDevClient) GetAdvisory(ctx context.Context, in *depsdevpb.GetAdvisoryRequest, opts ...grpc.CallOption) (*depsdevpb.Advisory, error) { - return nil, errors.New("not implemented") -} - -func (c *fakeDepsDevClient) Query(ctx context.Context, in *depsdevpb.QueryRequest, opts ...grpc.CallOption) (*depsdevpb.QueryResult, error) { - return nil, errors.New("not implemented") -} - func TestMavenResolverExtractor_ShouldExtract(t *testing.T) { t.Parallel() @@ -158,7 +92,6 @@ func TestParseMavenWithResolver_NoPackages(t *testing.T) { t.Parallel() packages, err := manifest.ParseMavenWithResolver(nil, "fixtures/maven/empty.xml") - if err != nil { t.Errorf("Got unexpected error: %v", err) } @@ -169,8 +102,8 @@ func TestParseMavenWithResolver_NoPackages(t *testing.T) { func TestParseMavenWithResolver_OnePackage(t *testing.T) { t.Parallel() - packages, err := manifest.ParseMavenWithResolver(nil, "fixtures/maven/one-package.xml") - + resolutionClient := clienttest.NewMockResolutionClient(t, "fixtures/universe/basic-universe.yaml") + packages, err := manifest.ParseMavenWithResolver(resolutionClient, "fixtures/maven/one-package.xml") if err != nil { t.Errorf("Got unexpected error: %v", err) } @@ -188,8 +121,8 @@ func TestParseMavenWithResolver_OnePackage(t *testing.T) { func TestParseMavenWithResolver_TwoPackages(t *testing.T) { t.Parallel() - packages, err := manifest.ParseMavenWithResolver(nil, "fixtures/maven/two-packages.xml") - + resolutionClient := clienttest.NewMockResolutionClient(t, "fixtures/universe/basic-universe.yaml") + packages, err := manifest.ParseMavenWithResolver(resolutionClient, "fixtures/maven/two-packages.xml") if err != nil { t.Errorf("Got unexpected error: %v", err) } @@ -213,8 +146,8 @@ func TestParseMavenWithResolver_TwoPackages(t *testing.T) { func TestParseMavenWithResolver_WithDependencyManagement(t *testing.T) { t.Parallel() - packages, err := manifest.ParseMavenWithResolver(nil, "fixtures/maven/with-dependency-management.xml") - + resolutionClient := clienttest.NewMockResolutionClient(t, "fixtures/universe/basic-universe.yaml") + packages, err := manifest.ParseMavenWithResolver(resolutionClient, "fixtures/maven/with-dependency-management.xml") if err != nil { t.Errorf("Got unexpected error: %v", err) } @@ -222,7 +155,7 @@ func TestParseMavenWithResolver_WithDependencyManagement(t *testing.T) { expectPackages(t, packages, []lockfile.PackageDetails{ { Name: "io.netty:netty-all", - Version: "4.1.42.Final", + Version: "4.1.9", Ecosystem: lockfile.MavenEcosystem, CompareAs: lockfile.MavenEcosystem, }, @@ -232,20 +165,14 @@ func TestParseMavenWithResolver_WithDependencyManagement(t *testing.T) { Ecosystem: lockfile.MavenEcosystem, CompareAs: lockfile.MavenEcosystem, }, - { - Name: "com.google.code.findbugs:jsr305", - Version: "3.0.2", - Ecosystem: lockfile.MavenEcosystem, - CompareAs: lockfile.MavenEcosystem, - }, }) } func TestParseMavenWithResolver_Interpolation(t *testing.T) { t.Parallel() - packages, err := manifest.ParseMavenWithResolver(&fakeDepsDevClient{}, "fixtures/maven/interpolation.xml") - + resolutionClient := clienttest.NewMockResolutionClient(t, "fixtures/universe/basic-universe.yaml") + packages, err := manifest.ParseMavenWithResolver(resolutionClient, "fixtures/maven/interpolation.xml") if err != nil { t.Errorf("Got unexpected error: %v", err) } @@ -275,8 +202,8 @@ func TestParseMavenWithResolver_Interpolation(t *testing.T) { func TestParseMavenWithResolver_WithScope(t *testing.T) { t.Parallel() - packages, err := manifest.ParseMavenWithResolver(nil, "fixtures/maven/with-scope.xml") - + resolutionClient := clienttest.NewMockResolutionClient(t, "fixtures/universe/basic-universe.yaml") + packages, err := manifest.ParseMavenWithResolver(resolutionClient, "fixtures/maven/with-scope.xml") if err != nil { t.Errorf("Got unexpected error: %v", err) } @@ -287,7 +214,50 @@ func TestParseMavenWithResolver_WithScope(t *testing.T) { Version: "4.12", Ecosystem: lockfile.MavenEcosystem, CompareAs: lockfile.MavenEcosystem, - DepGroups: []string{"test"}, + DepGroups: []string{"runtime"}, + }, + }) +} + +func TestParseMavenWithResolver_Transitive(t *testing.T) { + t.Parallel() + + resolutionClient := clienttest.NewMockResolutionClient(t, "fixtures/universe/basic-universe.yaml") + packages, err := manifest.ParseMavenWithResolver(resolutionClient, "fixtures/maven/transitive.xml") + if err != nil { + t.Errorf("Got unexpected error: %v", err) + } + + expectPackages(t, packages, []lockfile.PackageDetails{ + { + Name: "org.direct:alice", + Version: "1.0.0", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "org.direct:bob", + Version: "2.0.0", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "org.transitive:chuck", + Version: "1.1.1", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "org.transitive:dave", + Version: "2.2.2", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, + }, + { + Name: "org.transitive:eve", + Version: "3.3.3", + Ecosystem: lockfile.MavenEcosystem, + CompareAs: lockfile.MavenEcosystem, }, }) } From b1b8bfa6ec51de5f8258d4b5a47946a8c85b8e5e Mon Sep 17 00:00:00 2001 From: Michael Kedar Date: Tue, 4 Jun 2024 15:26:40 +1000 Subject: [PATCH 61/68] Fix some Maven manifest & resolver issues (#1008) Some fixes for a few Maven resolver issues I've come across: 1. Requirement origins weren't being tracked correctly if a package key was set by a property. Fixed by checking dependency keys before and after interpolation, and updating the map if they changed. (I've modified one of the tests to check for this case) 2. To work around the resolver not resolving test or optional dependencies, made it so the pom.xml parser removes the test scope and optional flags. 3. `resolve.PackageKey` was not sufficient to uniquely key the requirements for the `Groups` map in the `Manifest`. Made a new `RequirementKey` type with ecosystem-specific information for both npm and maven to solve this. --- internal/remediation/suggest/maven.go | 2 +- internal/remediation/suggest/maven_test.go | 29 ++++++- internal/resolution/dependency_chain.go | 12 ++- internal/resolution/manifest/manifest.go | 34 ++++++-- internal/resolution/manifest/maven.go | 99 +++++++++++++++++++--- internal/resolution/manifest/maven_test.go | 37 ++++++-- internal/resolution/manifest/npm.go | 24 ++++-- internal/resolution/manifest/npm_test.go | 40 ++++++--- internal/resolution/resolve_test.go | 13 ++- 9 files changed, 233 insertions(+), 57 deletions(-) diff --git a/internal/remediation/suggest/maven.go b/internal/remediation/suggest/maven.go index 9b0c7361cc0..faf486e7184 100644 --- a/internal/remediation/suggest/maven.go +++ b/internal/remediation/suggest/maven.go @@ -32,7 +32,7 @@ func (ms *MavenSuggester) Suggest(ctx context.Context, client resolve.Client, mf if slices.Contains(opts.NoUpdates, req.Name) { continue } - if opts.IgnoreDev && lockfile.MavenEcosystem.IsDevGroup(mf.Groups[req.PackageKey]) { + if opts.IgnoreDev && lockfile.MavenEcosystem.IsDevGroup(mf.Groups[manifest.MakeRequirementKey(req)]) { // Skip the update if the dependency is of development group // and updates on development dependencies are not desired continue diff --git a/internal/remediation/suggest/maven_test.go b/internal/remediation/suggest/maven_test.go index bd626724adc..b1ad9d4e572 100644 --- a/internal/remediation/suggest/maven_test.go +++ b/internal/remediation/suggest/maven_test.go @@ -28,6 +28,27 @@ func depTypeWithOrigin(origin string) dep.Type { return result } +func mavenReqKey(t *testing.T, name, artifactType, classifier string) manifest.RequirementKey { + t.Helper() + var typ dep.Type + if artifactType != "" { + typ.AddAttr(dep.MavenArtifactType, artifactType) + } + if classifier != "" { + typ.AddAttr(dep.MavenClassifier, classifier) + } + + return manifest.MakeRequirementKey(resolve.RequirementVersion{ + VersionKey: resolve.VersionKey{ + PackageKey: resolve.PackageKey{ + Name: name, + System: resolve.Maven, + }, + }, + Type: typ, + }) +} + func TestSuggest(t *testing.T) { t.Parallel() ctx := context.Background() @@ -98,7 +119,7 @@ func TestSuggest(t *testing.T) { VersionType: resolve.Requirement, Version: "4.12", }, - Type: dep.NewType(dep.Test), + // Type: dep.NewType(dep.Test), test scope is ignored to make resolution work. }, { VersionKey: resolve.VersionKey{ @@ -223,9 +244,9 @@ func TestSuggest(t *testing.T) { Type: depPlugin, }, }, - Groups: map[resolve.PackageKey][]string{ - {System: resolve.Maven, Name: "junit:junit"}: {"test"}, - {System: resolve.Maven, Name: "org.import:xyz"}: {"import"}, + Groups: map[manifest.RequirementKey][]string{ + mavenReqKey(t, "junit:junit", "", ""): {"test"}, + mavenReqKey(t, "org.import:xyz", "", ""): {"import"}, }, EcosystemSpecific: manifest.MavenManifestSpecific{ Properties: []manifest.PropertyWithOrigin{ diff --git a/internal/resolution/dependency_chain.go b/internal/resolution/dependency_chain.go index 59ab5ee1630..63f73cdd07c 100644 --- a/internal/resolution/dependency_chain.go +++ b/internal/resolution/dependency_chain.go @@ -6,6 +6,7 @@ import ( "deps.dev/util/resolve" "deps.dev/util/resolve/dep" + "github.com/google/osv-scanner/internal/resolution/manifest" "github.com/google/osv-scanner/internal/resolution/util" vulnUtil "github.com/google/osv-scanner/internal/utility/vulns" "github.com/google/osv-scanner/pkg/lockfile" @@ -34,7 +35,7 @@ func (dc DependencyChain) End() (resolve.VersionKey, string) { return dc.At(0) } -func ChainIsDev(dc DependencyChain, groups map[resolve.PackageKey][]string) bool { +func ChainIsDev(dc DependencyChain, groups map[manifest.RequirementKey][]string) bool { edge := dc.Edges[len(dc.Edges)-1] // This check only applies to the graphs created from the in-place lockfile scanning. // TODO: consider dev dependencies in e.g. workspaces that aren't direct @@ -42,13 +43,16 @@ func ChainIsDev(dc DependencyChain, groups map[resolve.PackageKey][]string) bool return true } - vk := dc.Graph.Nodes[edge.To].Version - ecosystem, ok := util.OSVEcosystem[vk.System] + req := resolve.RequirementVersion{ + VersionKey: dc.Graph.Nodes[edge.To].Version, + Type: edge.Type.Clone(), + } + ecosystem, ok := util.OSVEcosystem[req.System] if !ok { return false } - return lockfile.Ecosystem(ecosystem).IsDevGroup(groups[vk.PackageKey]) + return lockfile.Ecosystem(ecosystem).IsDevGroup(groups[manifest.MakeRequirementKey(req)]) } // ComputeChains computes all paths from each specified NodeID to the root node. diff --git a/internal/resolution/manifest/manifest.go b/internal/resolution/manifest/manifest.go index 6ef4eb94bf2..94c9047e137 100644 --- a/internal/resolution/manifest/manifest.go +++ b/internal/resolution/manifest/manifest.go @@ -15,17 +15,17 @@ import ( ) type Manifest struct { - FilePath string // Path to the manifest file on disk - Root resolve.Version // Version representing this package - Requirements []resolve.RequirementVersion // All direct requirements, including dev - Groups map[resolve.PackageKey][]string // Dependency groups that the imports belong to - LocalManifests []Manifest // manifests of local packages - EcosystemSpecific any // Any ecosystem-specific information needed + FilePath string // Path to the manifest file on disk + Root resolve.Version // Version representing this package + Requirements []resolve.RequirementVersion // All direct requirements, including dev + Groups map[RequirementKey][]string // Dependency groups that the imports belong to + LocalManifests []Manifest // manifests of local packages + EcosystemSpecific any // Any ecosystem-specific information needed } func newManifest() Manifest { return Manifest{ - Groups: make(map[resolve.PackageKey][]string), + Groups: make(map[RequirementKey][]string), } } @@ -101,3 +101,23 @@ func GetManifestIO(pathToManifest string) (ManifestIO, error) { return nil, fmt.Errorf("unsupported manifest type: %s", base) } } + +// A RequirementKey is a comparable type that uniquely identifies a package dependency in a manifest. +// It does not include the version specification. +type RequirementKey struct { + resolve.PackageKey + EcosystemSpecific any +} + +func MakeRequirementKey(requirement resolve.RequirementVersion) RequirementKey { + switch requirement.System { + case resolve.NPM: + return npmRequirementKey(requirement) + case resolve.Maven: + return mavenRequirementKey(requirement) + case resolve.UnknownSystem: + fallthrough + default: + return RequirementKey{PackageKey: requirement.PackageKey} + } +} diff --git a/internal/resolution/manifest/maven.go b/internal/resolution/manifest/maven.go index e08029f98e6..5c91be9b9b1 100644 --- a/internal/resolution/manifest/maven.go +++ b/internal/resolution/manifest/maven.go @@ -13,6 +13,7 @@ import ( "deps.dev/util/maven" "deps.dev/util/resolve" + "deps.dev/util/resolve/dep" "github.com/google/osv-scanner/internal/resolution/datasource" "github.com/google/osv-scanner/pkg/lockfile" ) @@ -25,6 +26,20 @@ const ( OriginProfile = "profile" ) +func mavenRequirementKey(requirement resolve.RequirementVersion) RequirementKey { + // Maven dependencies must have unique groupId:artifactId:type:classifier. + artifactType, _ := requirement.Type.GetAttr(dep.MavenArtifactType) + classifier, _ := requirement.Type.GetAttr(dep.MavenClassifier) + + return RequirementKey{ + PackageKey: requirement.PackageKey, + EcosystemSpecific: struct{ ArtifactType, Classifier string }{ + ArtifactType: artifactType, + Classifier: classifier, + }, + } +} + type MavenManifestIO struct { datasource.MavenRegistryAPIClient } @@ -76,6 +91,58 @@ func (m MavenManifestIO) Read(df lockfile.DepFile) (Manifest, error) { } } + interpolate := func(project *maven.Project) error { + // Interpolating can change a dependency's key if it contained properties. + // If it is changed we need to update the requirementOrigins map with the new key. + allKeys := func() []maven.DependencyKey { + // Get all the dependencyKeys of the project. + // This order shouldn't change after calling Interpolate. + var keys []maven.DependencyKey + for _, dep := range project.Dependencies { + keys = append(keys, dep.Key()) + } + for _, dep := range project.DependencyManagement.Dependencies { + keys = append(keys, dep.Key()) + } + for _, profile := range project.Profiles { + for _, dep := range profile.Dependencies { + keys = append(keys, dep.Key()) + } + for _, dep := range profile.DependencyManagement.Dependencies { + keys = append(keys, dep.Key()) + } + } + for _, plugin := range project.Build.PluginManagement.Plugins { + for _, dep := range plugin.Dependencies { + keys = append(keys, dep.Key()) + } + } + + return keys + } + + prevKeys := allKeys() + if err := project.Interpolate(); err != nil { + return err + } + + newKeys := allKeys() + if len(prevKeys) != len(newKeys) { + // The length can change if properties fail to resolve, which should be rare. + // It's difficult to determine which dependencies were removed in these cases, so just error. + return errors.New("number of dependencies changed after interpolation") + } + + for i, prevKey := range prevKeys { + newKey := newKeys[i] + if newKey != prevKey { + requirementOrigins[newKey] = requirementOrigins[prevKey] + } + } + + return nil + } + var project maven.Project if err := xml.NewDecoder(df).Decode(&project); err != nil { return Manifest{}, fmt.Errorf("failed to unmarshal project: %w", err) @@ -86,6 +153,10 @@ func (m MavenManifestIO) Read(df lockfile.DepFile) (Manifest, error) { if err := m.MergeParents(ctx, &project, project.Parent, 1, df.Path(), addAllRequirements, OriginParent); err != nil { return Manifest{}, fmt.Errorf("failed to merge parents: %w", err) } + // Interpolate to resolve properties. + if err := interpolate(&project); err != nil { + return Manifest{}, fmt.Errorf("failed to merge parents: %w", err) + } // Process the dependencies: // - dedupe dependencies and dependency management @@ -97,6 +168,10 @@ func (m MavenManifestIO) Read(df lockfile.DepFile) (Manifest, error) { if err := m.MergeParents(ctx, &result, root, 0, df.Path(), addAllRequirements, OriginImport); err != nil { return maven.DependencyManagement{}, err } + // Interpolate to resolve properties. + if err := interpolate(&result); err != nil { + return maven.DependencyManagement{}, err + } return result.DependencyManagement, nil }) @@ -112,21 +187,19 @@ func (m MavenManifestIO) Read(df lockfile.DepFile) (Manifest, error) { var requirements []resolve.RequirementVersion var otherRequirements []resolve.RequirementVersion - groups := make(map[resolve.PackageKey][]string) + groups := make(map[RequirementKey][]string) addRequirements := func(deps []maven.Dependency) { for _, dep := range deps { origin := requirementOrigins[dep.Key()] + reqVer := makeRequirementVersion(dep, origin) if strings.HasPrefix(origin, OriginParent+"@") || strings.HasPrefix(origin, OriginImport) { - otherRequirements = append(otherRequirements, makeRequirementVersion(dep, origin)) + otherRequirements = append(otherRequirements, reqVer) } else { - requirements = append(requirements, makeRequirementVersion(dep, origin)) + requirements = append(requirements, reqVer) } if dep.Scope != "" { - pk := resolve.PackageKey{ - System: resolve.Maven, - Name: dep.Name(), - } - groups[pk] = append(groups[pk], string(dep.Scope)) + reqKey := mavenRequirementKey(reqVer) + groups[reqKey] = append(groups[reqKey], string(dep.Scope)) } } } @@ -228,8 +301,8 @@ func (m MavenManifestIO) MergeParents(ctx context.Context, result *maven.Project result.MergeParent(proj) current = proj.Parent } - // Interpolate the project to resolve the properties. - return result.Interpolate() + + return nil } // For dependencies in profiles and plugins, we use origin to indicate where they are from. @@ -238,6 +311,12 @@ func (m MavenManifestIO) MergeParents(ctx context.Context, result *maven.Project // - identifier to locate the profile/plugin which is profile ID or plugin name // - (optional) suffix indicates if this is a dependency management func makeRequirementVersion(dep maven.Dependency, origin string) resolve.RequirementVersion { + // Treat test & optional dependencies as regular dependencies to force the resolver to resolve them. + if dep.Scope == "test" { + dep.Scope = "" + } + dep.Optional = "" + return resolve.RequirementVersion{ VersionKey: resolve.VersionKey{ PackageKey: resolve.PackageKey{ diff --git a/internal/resolution/manifest/maven_test.go b/internal/resolution/manifest/maven_test.go index 0830e03bf2d..6ee2f56353b 100644 --- a/internal/resolution/manifest/maven_test.go +++ b/internal/resolution/manifest/maven_test.go @@ -35,6 +35,27 @@ func depTypeWithOrigin(origin string) dep.Type { return result } +func mavenReqKey(t *testing.T, name, artifactType, classifier string) manifest.RequirementKey { + t.Helper() + var typ dep.Type + if artifactType != "" { + typ.AddAttr(dep.MavenArtifactType, artifactType) + } + if classifier != "" { + typ.AddAttr(dep.MavenClassifier, classifier) + } + + return manifest.MakeRequirementKey(resolve.RequirementVersion{ + VersionKey: resolve.VersionKey{ + PackageKey: resolve.PackageKey{ + Name: name, + System: resolve.Maven, + }, + }, + Type: typ, + }) +} + func TestMavenRead(t *testing.T) { t.Parallel() @@ -46,13 +67,14 @@ func TestMavenRead(t *testing.T) { 1.2.3 pom + bbb 2.2.2 org.example - bbb + ${bbb.artifact} ${bbb.version} @@ -138,7 +160,7 @@ func TestMavenRead(t *testing.T) { VersionType: resolve.Requirement, Version: "4.12", }, - Type: dep.NewType(dep.Test), + // Type: dep.NewType(dep.Test), test scope is ignored to make resolution work. }, { VersionKey: resolve.VersionKey{ @@ -206,12 +228,13 @@ func TestMavenRead(t *testing.T) { Type: depPlugin, }, }, - Groups: map[resolve.PackageKey][]string{ - {System: resolve.Maven, Name: "junit:junit"}: {"test"}, - {System: resolve.Maven, Name: "org.import:xyz"}: {"import"}, + Groups: map[manifest.RequirementKey][]string{ + mavenReqKey(t, "junit:junit", "", ""): {"test"}, + mavenReqKey(t, "org.import:xyz", "pom", ""): {"import"}, }, EcosystemSpecific: manifest.MavenManifestSpecific{ Properties: []manifest.PropertyWithOrigin{ + {Property: maven.Property{Name: "bbb.artifact", Value: "bbb"}}, {Property: maven.Property{Name: "bbb.version", Value: "2.2.2"}}, {Property: maven.Property{Name: "aaa.version", Value: "1.1.1"}}, @@ -231,7 +254,7 @@ func TestMavenRead(t *testing.T) { VersionType: resolve.Requirement, Version: "${junit.version}", }, - Type: dep.NewType(dep.Test), + // Type: dep.NewType(dep.Test), test scope is ignored to make resolution work. }, { VersionKey: resolve.VersionKey{ @@ -259,7 +282,7 @@ func TestMavenRead(t *testing.T) { VersionKey: resolve.VersionKey{ PackageKey: resolve.PackageKey{ System: resolve.Maven, - Name: "org.example:bbb", + Name: "org.example:${bbb.artifact}", }, VersionType: resolve.Requirement, Version: "${bbb.version}", diff --git a/internal/resolution/manifest/npm.go b/internal/resolution/manifest/npm.go index 69d574f403f..f8e68be7557 100644 --- a/internal/resolution/manifest/npm.go +++ b/internal/resolution/manifest/npm.go @@ -15,6 +15,17 @@ import ( "github.com/tidwall/sjson" ) +func npmRequirementKey(requirement resolve.RequirementVersion) RequirementKey { + // Npm requirements are the uniquely identified by the key in the dependencies fields (which ends up being the path in node_modules) + // Declaring a dependency in multiple places (dependencies, devDependencies, optionalDependencies) only installs it once at one version. + // Aliases & non-registry dependencies are keyed on their 'KnownAs' attribute. + knownAs, _ := requirement.Type.GetAttr(dep.KnownAs) + return RequirementKey{ + PackageKey: requirement.PackageKey, + EcosystemSpecific: knownAs, + } +} + type NpmManifestIO struct{} type PackageJSON struct { @@ -121,7 +132,7 @@ func (rw NpmManifestIO) Read(f lockfile.DepFile) (Manifest, error) { } else { manif.Requirements = append(manif.Requirements, req) } - manif.Groups[req.PackageKey] = []string{"optional"} + manif.Groups[npmRequirementKey(req)] = []string{"optional"} } for pkg, ver := range packagejson.DevDependencies { @@ -142,7 +153,7 @@ func (rw NpmManifestIO) Read(f lockfile.DepFile) (Manifest, error) { } else { manif.Requirements = append(manif.Requirements, req) } - manif.Groups[req.PackageKey] = []string{"dev"} + manif.Groups[npmRequirementKey(req)] = []string{"dev"} } resolve.SortDependencies(manif.Requirements) @@ -168,10 +179,11 @@ func (rw NpmManifestIO) Read(f lockfile.DepFile) (Manifest, error) { for j, req := range m.Requirements { if isWorkspace(req) { manif.LocalManifests[i].Requirements[j].Name = req.Name + ":workspace" - if g, ok := m.Groups[req.PackageKey]; ok { - newPK := manif.LocalManifests[i].Requirements[j].PackageKey - manif.LocalManifests[i].Groups[newPK] = g - delete(manif.LocalManifests[i].Groups, req.PackageKey) + reqKey := npmRequirementKey(req) + if g, ok := m.Groups[reqKey]; ok { + newKey := npmRequirementKey(manif.LocalManifests[i].Requirements[j]) + manif.LocalManifests[i].Groups[newKey] = g + delete(manif.LocalManifests[i].Groups, reqKey) } } } diff --git a/internal/resolution/manifest/npm_test.go b/internal/resolution/manifest/npm_test.go index 3cab7a5d5fc..33877e7f6a5 100644 --- a/internal/resolution/manifest/npm_test.go +++ b/internal/resolution/manifest/npm_test.go @@ -15,7 +15,7 @@ import ( func aliasType(t *testing.T, aliasedName string) dep.Type { t.Helper() - typ := dep.NewType() + var typ dep.Type typ.AddAttr(dep.KnownAs, aliasedName) return typ @@ -33,6 +33,24 @@ func npmVK(t *testing.T, name, version string, versionType resolve.VersionType) } } +func npmReqKey(t *testing.T, name, knownAs string) manifest.RequirementKey { + t.Helper() + var typ dep.Type + if knownAs != "" { + typ.AddAttr(dep.KnownAs, knownAs) + } + + return manifest.MakeRequirementKey(resolve.RequirementVersion{ + VersionKey: resolve.VersionKey{ + PackageKey: resolve.PackageKey{ + Name: name, + System: resolve.NPM, + }, + }, + Type: typ, + }) +} + func TestNpmRead(t *testing.T) { t.Parallel() @@ -85,9 +103,9 @@ func TestNpmRead(t *testing.T) { VersionKey: npmVK(t, "string-width", "^4.2.3", resolve.Requirement), }, }, - Groups: map[resolve.PackageKey][]string{ - {System: resolve.NPM, Name: "eslint"}: {"dev"}, - {System: resolve.NPM, Name: "glob"}: {"optional"}, + Groups: map[manifest.RequirementKey][]string{ + npmReqKey(t, "eslint", ""): {"dev"}, + npmReqKey(t, "glob", ""): {"optional"}, }, } if !reflect.DeepEqual(got, want) { @@ -141,8 +159,8 @@ func TestNpmWorkspaceRead(t *testing.T) { VersionKey: npmVK(t, "z-z-z:workspace", "*", resolve.Requirement), }, }, - Groups: map[resolve.PackageKey][]string{ - {System: resolve.NPM, Name: "jquery"}: {"dev"}, + Groups: map[manifest.RequirementKey][]string{ + npmReqKey(t, "jquery", "jquery-real"): {"dev"}, // excludes workspace dev dependency }, LocalManifests: []manifest.Manifest{ @@ -155,7 +173,7 @@ func TestNpmWorkspaceRead(t *testing.T) { VersionKey: npmVK(t, "semver", "^7.6.0", resolve.Requirement), }, }, - Groups: map[resolve.PackageKey][]string{}, + Groups: map[manifest.RequirementKey][]string{}, }, { Root: resolve.Version{ @@ -169,9 +187,9 @@ func TestNpmWorkspaceRead(t *testing.T) { VersionKey: npmVK(t, "semver", "^6.3.1", resolve.Requirement), }, }, - Groups: map[resolve.PackageKey][]string{ - {System: resolve.NPM, Name: "jquery:workspace"}: {"dev"}, - {System: resolve.NPM, Name: "semver"}: {"dev"}, + Groups: map[manifest.RequirementKey][]string{ + npmReqKey(t, "jquery:workspace", ""): {"dev"}, + npmReqKey(t, "semver", ""): {"dev"}, }, }, { @@ -186,7 +204,7 @@ func TestNpmWorkspaceRead(t *testing.T) { VersionKey: npmVK(t, "semver", "^5.7.2", resolve.Requirement), }, }, - Groups: map[resolve.PackageKey][]string{}, + Groups: map[manifest.RequirementKey][]string{}, }, }, } diff --git a/internal/resolution/resolve_test.go b/internal/resolution/resolve_test.go index deb3d83f443..98dc9460a5b 100644 --- a/internal/resolution/resolve_test.go +++ b/internal/resolution/resolve_test.go @@ -221,22 +221,21 @@ func TestResolve(t *testing.T) { VersionType: resolve.Concrete, }, } - m.Groups = make(map[resolve.PackageKey][]string) + m.Groups = make(map[manifest.RequirementKey][]string) m.Requirements = make([]resolve.RequirementVersion, len(tt.requirements)) for i, req := range tt.requirements { - pk := resolve.PackageKey{ - Name: req.name, - System: tt.system, - } m.Requirements[i] = resolve.RequirementVersion{ VersionKey: resolve.VersionKey{ - PackageKey: pk, + PackageKey: resolve.PackageKey{ + Name: req.name, + System: tt.system, + }, Version: req.version, VersionType: resolve.Requirement, }, Type: req.typ, } - m.Groups[pk] = req.groups + m.Groups[manifest.MakeRequirementKey(m.Requirements[i])] = req.groups } res, err := resolution.Resolve(context.Background(), cl, m) From 8afe1574d97cad642597fb1cb7e08a07c67df0f3 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Wed, 5 Jun 2024 11:47:54 +1200 Subject: [PATCH 62/68] ci: don't try to upload code coverage on macOS (#1020) This keeps failing on macOS, so let's skip it for now --- .github/workflows/test-action/action.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test-action/action.yml b/.github/workflows/test-action/action.yml index f1e2f04da82..7b54e4e3eaf 100644 --- a/.github/workflows/test-action/action.yml +++ b/.github/workflows/test-action/action.yml @@ -29,6 +29,9 @@ runs: TEST_ACCEPTANCE: true run: ./scripts/run_tests.sh - name: Upload coverage to Codecov + # codecov is currently being flakey on macOS + # https://github.com/codecov/codecov-action/issues/1416 + if: ${{ runner.os != 'macOS' }} uses: codecov/codecov-action@125fc84a9a348dbcf27191600683ec096ec9021c # v4.4.1 with: token: ${{ inputs.codecov_token }} From 69e9088211f73eb9cd0c6a2eb40f4d9f820a8417 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 5 Jun 2024 03:58:32 +0200 Subject: [PATCH 63/68] chore(deps): update workflows (#1016) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [docker/login-action](https://togithub.com/docker/login-action) | action | digest | `e92390c` -> `0d4c9c5` | | [github/codeql-action](https://togithub.com/github/codeql-action) | action | patch | `v3.25.6` -> `v3.25.8` | --- ### Release Notes
github/codeql-action (github/codeql-action) ### [`v3.25.8`](https://togithub.com/github/codeql-action/compare/v3.25.7...v3.25.8) [Compare Source](https://togithub.com/github/codeql-action/compare/v3.25.7...v3.25.8) ### [`v3.25.7`](https://togithub.com/github/codeql-action/compare/v3.25.6...v3.25.7) [Compare Source](https://togithub.com/github/codeql-action/compare/v3.25.6...v3.25.7)
--- ### Configuration 📅 **Schedule**: Branch creation - "before 6am on monday" in timezone Australia/Sydney, Automerge - At any time (no schedule defined). đŸšĻ **Automerge**: Disabled by config. Please merge this manually once you are satisfied. â™ģ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. đŸ‘ģ **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/google/osv-scanner). --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/goreleaser.yml | 2 +- .github/workflows/osv-scanner-reusable-pr.yml | 2 +- .github/workflows/osv-scanner-reusable.yml | 2 +- .github/workflows/scorecards.yml | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index a391f3f3954..a74587d5e56 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -50,7 +50,7 @@ jobs: go-version-file: go.mod # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 + uses: github/codeql-action/init@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -61,7 +61,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 + uses: github/codeql-action/autobuild@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 # ℹī¸ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -75,4 +75,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 + uses: github/codeql-action/analyze@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 diff --git a/.github/workflows/goreleaser.yml b/.github/workflows/goreleaser.yml index 72ac495e345..3e1cefefba7 100644 --- a/.github/workflows/goreleaser.yml +++ b/.github/workflows/goreleaser.yml @@ -34,7 +34,7 @@ jobs: - uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3 - uses: docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb # v3 - name: ghcr-login - uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3 + uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446 # v3 with: registry: ghcr.io username: ${{ github.repository_owner }} diff --git a/.github/workflows/osv-scanner-reusable-pr.yml b/.github/workflows/osv-scanner-reusable-pr.yml index 35e08ed5d2f..f8bd4183a7c 100644 --- a/.github/workflows/osv-scanner-reusable-pr.yml +++ b/.github/workflows/osv-scanner-reusable-pr.yml @@ -108,6 +108,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" if: ${{ !cancelled() && inputs.upload-sarif == true }} - uses: github/codeql-action/upload-sarif@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 + uses: github/codeql-action/upload-sarif@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 with: sarif_file: ${{ inputs.results-file-name }} diff --git a/.github/workflows/osv-scanner-reusable.yml b/.github/workflows/osv-scanner-reusable.yml index 987f52ea946..1af403d5677 100644 --- a/.github/workflows/osv-scanner-reusable.yml +++ b/.github/workflows/osv-scanner-reusable.yml @@ -91,6 +91,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" if: "${{ !cancelled() && inputs.upload-sarif == true }}" - uses: github/codeql-action/upload-sarif@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 + uses: github/codeql-action/upload-sarif@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 with: sarif_file: ${{ inputs.results-file-name }} diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 34e1e39195b..6cb03207ab3 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -68,6 +68,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 + uses: github/codeql-action/upload-sarif@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 with: sarif_file: results.sarif From 8c75812b51aa57bf70d92bd775c695bad2113fa7 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 5 Jun 2024 03:58:48 +0200 Subject: [PATCH 64/68] fix(deps): update osv-scanner minor (#1017) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | Type | Update | |---|---|---|---|---|---|---|---| | [github.com/CycloneDX/cyclonedx-go](https://togithub.com/CycloneDX/cyclonedx-go) | `v0.8.0` -> `v0.9.0` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fCycloneDX%2fcyclonedx-go/v0.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fCycloneDX%2fcyclonedx-go/v0.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fCycloneDX%2fcyclonedx-go/v0.8.0/v0.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fCycloneDX%2fcyclonedx-go/v0.8.0/v0.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | require | minor | | [github.com/charmbracelet/bubbletea](https://togithub.com/charmbracelet/bubbletea) | `v0.26.3` -> `v0.26.4` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fcharmbracelet%2fbubbletea/v0.26.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fcharmbracelet%2fbubbletea/v0.26.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fcharmbracelet%2fbubbletea/v0.26.3/v0.26.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fcharmbracelet%2fbubbletea/v0.26.3/v0.26.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | require | patch | | golang.org/x/exp | `4c93da0` -> `fc45aab` | [![age](https://developer.mend.io/api/mc/badges/age/go/golang.org%2fx%2fexp/v0.0.0-20240604190554-fc45aab8b7f8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/golang.org%2fx%2fexp/v0.0.0-20240604190554-fc45aab8b7f8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/golang.org%2fx%2fexp/v0.0.0-20240525044651-4c93da0ed11d/v0.0.0-20240604190554-fc45aab8b7f8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/golang.org%2fx%2fexp/v0.0.0-20240525044651-4c93da0ed11d/v0.0.0-20240604190554-fc45aab8b7f8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | require | digest | | golang.org/x/mod | `v0.17.0` -> `v0.18.0` | [![age](https://developer.mend.io/api/mc/badges/age/go/golang.org%2fx%2fmod/v0.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/golang.org%2fx%2fmod/v0.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/golang.org%2fx%2fmod/v0.17.0/v0.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/golang.org%2fx%2fmod/v0.17.0/v0.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | require | minor | | golang.org/x/term | `v0.20.0` -> `v0.21.0` | [![age](https://developer.mend.io/api/mc/badges/age/go/golang.org%2fx%2fterm/v0.21.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/golang.org%2fx%2fterm/v0.21.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/golang.org%2fx%2fterm/v0.20.0/v0.21.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/golang.org%2fx%2fterm/v0.20.0/v0.21.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | require | minor | --- ### Release Notes
CycloneDX/cyclonedx-go (github.com/CycloneDX/cyclonedx-go) ### [`v0.9.0`](https://togithub.com/CycloneDX/cyclonedx-go/releases/tag/v0.9.0) [Compare Source](https://togithub.com/CycloneDX/cyclonedx-go/compare/v0.8.0...v0.9.0) #### Changelog ##### Features - [`729c284`](https://togithub.com/CycloneDX/cyclonedx-go/commit/729c284798ebe341ced210b661362f77d68cd655): feat: Add CycloneDX 1.6 fields swhid and omniborId ([@​snyk-tim](https://togithub.com/snyk-tim)) - [`b5d3595`](https://togithub.com/CycloneDX/cyclonedx-go/commit/b5d35959767efce95f50e96bf752c47fbe374496): feat: add manufacturer and authors ([@​snyk-tim](https://togithub.com/snyk-tim)) - [`c52e698`](https://togithub.com/CycloneDX/cyclonedx-go/commit/c52e698d2fe3fbd60df6ff397f44e7b0ea15a4bc): feat: raise baseline go version to 1.20 ([@​nscuro](https://togithub.com/nscuro)) ##### Fixes - [`9166e10`](https://togithub.com/CycloneDX/cyclonedx-go/commit/9166e10fdecaadd8a97ceed9636261d351d90a65): fix: `ioutil` -> `io` ([@​nscuro](https://togithub.com/nscuro)) - [`349fc8c`](https://togithub.com/CycloneDX/cyclonedx-go/commit/349fc8cd072e90d81c0328f1d9dab16aa30fcf60): fix: add bom-ref to OrganizationalEntity/Contact ([@​snyk-tim](https://togithub.com/snyk-tim)) - [`c97da90`](https://togithub.com/CycloneDX/cyclonedx-go/commit/c97da90e259e0051e02e07300c75ad5e37a0311b): fix: handle breaking changes in skywalking-eyes ([@​nscuro](https://togithub.com/nscuro)) ##### Building and Packaging - [`ec6291e`](https://togithub.com/CycloneDX/cyclonedx-go/commit/ec6291e9ce9efbbb5d0010de4d8668fcbd05d148): build(deps): bump actions/checkout from 4.1.1 to 4.1.5 ([@​dependabot](https://togithub.com/dependabot)\[bot]) - [`899fe39`](https://togithub.com/CycloneDX/cyclonedx-go/commit/899fe391ca4d756f1d5ba84478d3bc8795003cba): build(deps): bump actions/checkout from 4.1.5 to 4.1.6 ([@​dependabot](https://togithub.com/dependabot)\[bot]) - [`8674ed5`](https://togithub.com/CycloneDX/cyclonedx-go/commit/8674ed5ecc38b65e03908b5a74308c95039068a9): build(deps): bump actions/setup-go from 5.0.0 to 5.0.1 ([@​dependabot](https://togithub.com/dependabot)\[bot]) - [`db3a114`](https://togithub.com/CycloneDX/cyclonedx-go/commit/db3a1144a2ce30b85e5985d2755fa3e4a81c5ca8): build(deps): bump apache/skywalking-eyes from 0.4.0 to 0.6.0 ([@​dependabot](https://togithub.com/dependabot)\[bot]) - [`a3bd055`](https://togithub.com/CycloneDX/cyclonedx-go/commit/a3bd05518575f14d917685a02c689f81eedaad5c): build(deps): bump github.com/stretchr/testify from 1.8.4 to 1.9.0 ([@​dependabot](https://togithub.com/dependabot)\[bot]) - [`1179dd9`](https://togithub.com/CycloneDX/cyclonedx-go/commit/1179dd9051112c3b44a6cc577964c7d501a7258b): build(deps): bump gitpod/workspace-go from `8b9a0f6` to `8d15123` ([@​dependabot](https://togithub.com/dependabot)\[bot]) - [`d98494e`](https://togithub.com/CycloneDX/cyclonedx-go/commit/d98494ea11dbb6550705d46d2473aa2a4a18e642): build(deps): bump gitpod/workspace-go from `9118b93` to `8b9a0f6` ([@​dependabot](https://togithub.com/dependabot)\[bot]) - [`1e2a3a0`](https://togithub.com/CycloneDX/cyclonedx-go/commit/1e2a3a09e86d720729a3ab7ec55ed3ffa75164a5): build(deps): bump gitpod/workspace-go from `94ae638` to `9118b93` ([@​dependabot](https://togithub.com/dependabot)\[bot]) - [`d4d6e35`](https://togithub.com/CycloneDX/cyclonedx-go/commit/d4d6e35fcfb08d14589b4a693aac3f28978b640b): build(deps): bump golangci/golangci-lint-action from 3.7.0 to 4.0.0 ([@​dependabot](https://togithub.com/dependabot)\[bot]) - [`521d1ce`](https://togithub.com/CycloneDX/cyclonedx-go/commit/521d1ce7b555013f2b78d8c4a21954815863ab44): build(deps): bump golangci/golangci-lint-action from 4.0.0 to 6.0.1 ([@​dependabot](https://togithub.com/dependabot)\[bot]) - [`f1ebafe`](https://togithub.com/CycloneDX/cyclonedx-go/commit/f1ebafe5e2d2af3a3d551eb23c583a93b7ebccbf): build(deps): bump goreleaser/goreleaser-action from 5.0.0 to 5.1.0 ([@​dependabot](https://togithub.com/dependabot)\[bot]) ##### Others - [`16d2143`](https://togithub.com/CycloneDX/cyclonedx-go/commit/16d2143b3d74b77af8a309b331e1bc46a445f495): Fix(1.6): Added missing omitempty in NistQuantumSecurityLevel ([@​Petzys](https://togithub.com/Petzys)) - [`ffec473`](https://togithub.com/CycloneDX/cyclonedx-go/commit/ffec473428073e1266169e97c1c64de95e89981b): chore: add license header ([@​mcombuechen](https://togithub.com/mcombuechen)) - [`1f8fdcc`](https://togithub.com/CycloneDX/cyclonedx-go/commit/1f8fdcc0047611a8baacfcd214c5ba3821fefd51): feat(1.6): add BOM.Declarations ([@​mcombuechen](https://togithub.com/mcombuechen)) - [`62b5342`](https://togithub.com/CycloneDX/cyclonedx-go/commit/62b53429289d6cc6884b111256588150e3fed308): feat(1.6): add BOM.Definitions ([@​mcombuechen](https://togithub.com/mcombuechen)) - [`c33b9cb`](https://togithub.com/CycloneDX/cyclonedx-go/commit/c33b9cb58eaa14e89740182fbde2a0cc888bc457): feat(1.6): add CBOM types ([@​Petzys](https://togithub.com/Petzys)) - [`10e10c8`](https://togithub.com/CycloneDX/cyclonedx-go/commit/10e10c8bc8fcac6f90c914828786f11e404919b8): feat(1.6): add JSON schema, XML namespace ([@​mcombuechen](https://togithub.com/mcombuechen)) - [`2dc599a`](https://togithub.com/CycloneDX/cyclonedx-go/commit/2dc599a8ad0f2be20e9bfc55ba75764758e6c7b8): feat(1.6): add License.Acknowledgement ([@​mcombuechen](https://togithub.com/mcombuechen)) - [`7a32fde`](https://togithub.com/CycloneDX/cyclonedx-go/commit/7a32fde7e9e9e5fb44f8f8aafadd83a21ff82aaf): feat(1.6): add PostalAddress type ([@​mcombuechen](https://togithub.com/mcombuechen)) - [`b8e4529`](https://togithub.com/CycloneDX/cyclonedx-go/commit/b8e4529773c3d12b172729567574ea6201231682): feat(1.6): add SpecVersion for v1.6 ([@​mcombuechen](https://togithub.com/mcombuechen)) - [`c877828`](https://togithub.com/CycloneDX/cyclonedx-go/commit/c8778287f29dd21bff18a4f27f71f495de7b4991): feat(1.6): add environmentalConsiderations ([@​mcombuechen](https://togithub.com/mcombuechen)) - [`e0e9c67`](https://togithub.com/CycloneDX/cyclonedx-go/commit/e0e9c670e1617adbdd147cff7cc0747769a4e723): feat(1.6): add schema definitions for CycloneDX 1.6 ([@​mcombuechen](https://togithub.com/mcombuechen)) - [`b1636c2`](https://togithub.com/CycloneDX/cyclonedx-go/commit/b1636c2d6bb8aca4161402958a8d894aab7d66b5): feat(1.6): extend EvidenceOccurrence ([@​mcombuechen](https://togithub.com/mcombuechen)) - [`b4b3b94`](https://togithub.com/CycloneDX/cyclonedx-go/commit/b4b3b94a60b1665c1d0492744032a9375ef751b1): fix(1.6): convert occurrences of OrganizationalEntity ([@​mcombuechen](https://togithub.com/mcombuechen)) - [`9332ca6`](https://togithub.com/CycloneDX/cyclonedx-go/commit/9332ca660b772bc538b3c274ceb3d9f81caa0eb8): fix(1.6): fix json, xml labels on BOM.Definitions ([@​mcombuechen](https://togithub.com/mcombuechen))
charmbracelet/bubbletea (github.com/charmbracelet/bubbletea) ### [`v0.26.4`](https://togithub.com/charmbracelet/bubbletea/releases/tag/v0.26.4) [Compare Source](https://togithub.com/charmbracelet/bubbletea/compare/v0.26.3...v0.26.4) Fix panics! Using `program.SetWindowTitle` and others *may* panic if they were called before the program starts. Also note that `program.SetWindowTitle` is now deprecated. To set the window title use [`tea.SetWindowTitle`](https://pkg.go.dev/github.com/charmbracelet/bubbletea@v0.26.4#SetWindowTitle) command. #### What's Changed - chore(deps): bump github.com/charmbracelet/x/ansi from 0.1.1 to 0.1.2 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/charmbracelet/bubbletea/pull/1026](https://togithub.com/charmbracelet/bubbletea/pull/1026) - chore(deps): bump github.com/charmbracelet/lipgloss from 0.10.0 to 0.11.0 in /examples by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/charmbracelet/bubbletea/pull/1025](https://togithub.com/charmbracelet/bubbletea/pull/1025) - fix: program renderer commands by [@​aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/bubbletea/pull/1030](https://togithub.com/charmbracelet/bubbletea/pull/1030) **Full Changelog**: https://github.com/charmbracelet/bubbletea/compare/v0.26.3...v0.26.4 *** The Charm logo Thoughts? Questions? We love hearing from you. Feel free to reach out on [Twitter](https://twitter.com/charmcli), [The Fediverse](https://mastodon.social/@​charmcli), or [Discord](https://charm.sh/chat).
--- ### Configuration 📅 **Schedule**: Branch creation - "before 6am on monday" in timezone Australia/Sydney, Automerge - At any time (no schedule defined). đŸšĻ **Automerge**: Disabled by config. Please merge this manually once you are satisfied. â™ģ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. đŸ‘ģ **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/google/osv-scanner). --- go.mod | 22 +++++++++++----------- go.sum | 44 ++++++++++++++++++++++---------------------- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/go.mod b/go.mod index 1cb09cf680e..de93666cbe1 100644 --- a/go.mod +++ b/go.mod @@ -8,9 +8,9 @@ require ( deps.dev/util/resolve v0.0.0-20240516073147-b352d7eeeae6 deps.dev/util/semver v0.0.0-20240516073147-b352d7eeeae6 github.com/BurntSushi/toml v1.4.0 - github.com/CycloneDX/cyclonedx-go v0.8.0 + github.com/CycloneDX/cyclonedx-go v0.9.0 github.com/charmbracelet/bubbles v0.18.0 - github.com/charmbracelet/bubbletea v0.26.3 + github.com/charmbracelet/bubbletea v0.26.4 github.com/charmbracelet/glamour v0.7.0 github.com/charmbracelet/lipgloss v0.11.0 github.com/dghubble/trie v0.1.0 @@ -30,10 +30,10 @@ require ( github.com/tidwall/pretty v1.2.1 github.com/tidwall/sjson v1.2.5 github.com/urfave/cli/v2 v2.27.2 - golang.org/x/exp v0.0.0-20240525044651-4c93da0ed11d - golang.org/x/mod v0.17.0 + golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 + golang.org/x/mod v0.18.0 golang.org/x/sync v0.7.0 - golang.org/x/term v0.20.0 + golang.org/x/term v0.21.0 golang.org/x/vuln v1.0.4 google.golang.org/grpc v1.64.0 google.golang.org/protobuf v1.34.1 @@ -50,7 +50,7 @@ require ( github.com/atotto/clipboard v0.1.4 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/aymerick/douceur v0.2.0 // indirect - github.com/charmbracelet/x/ansi v0.1.1 // indirect + github.com/charmbracelet/x/ansi v0.1.2 // indirect github.com/charmbracelet/x/input v0.1.0 // indirect github.com/charmbracelet/x/term v0.1.1 // indirect github.com/charmbracelet/x/windows v0.1.0 // indirect @@ -104,11 +104,11 @@ require ( github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 // indirect github.com/yuin/goldmark v1.7.0 // indirect github.com/yuin/goldmark-emoji v1.0.2 // indirect - golang.org/x/crypto v0.23.0 // indirect - golang.org/x/net v0.25.0 // indirect - golang.org/x/sys v0.20.0 // indirect - golang.org/x/text v0.15.0 // indirect - golang.org/x/tools v0.21.0 // indirect + golang.org/x/crypto v0.24.0 // indirect + golang.org/x/net v0.26.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/text v0.16.0 // indirect + golang.org/x/tools v0.22.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/go.sum b/go.sum index 0535ef96c19..160b9f5dc95 100644 --- a/go.sum +++ b/go.sum @@ -10,8 +10,8 @@ deps.dev/util/semver v0.0.0-20240516073147-b352d7eeeae6 h1:MDgLfK05U8cxWVMflhPTn deps.dev/util/semver v0.0.0-20240516073147-b352d7eeeae6/go.mod h1:jkcH+k02gWHBiZ7G4OnUOkSZ6WDq54Pt5DrOA8FN8Uo= github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= -github.com/CycloneDX/cyclonedx-go v0.8.0 h1:FyWVj6x6hoJrui5uRQdYZcSievw3Z32Z88uYzG/0D6M= -github.com/CycloneDX/cyclonedx-go v0.8.0/go.mod h1:K2bA+324+Og0X84fA8HhN2X066K7Bxz4rpMQ4ZhjtSk= +github.com/CycloneDX/cyclonedx-go v0.9.0 h1:inaif7qD8bivyxp7XLgxUYtOXWtDez7+j72qKTMQTb8= +github.com/CycloneDX/cyclonedx-go v0.9.0/go.mod h1:NE/EWvzELOFlG6+ljX/QeMlVt9VKcTwu8u0ccsACEsw= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= @@ -42,14 +42,14 @@ github.com/bradleyjkemp/cupaloy/v2 v2.8.0/go.mod h1:bm7JXdkRd4BHJk9HpwqAI8BoAY1l github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/charmbracelet/bubbles v0.18.0 h1:PYv1A036luoBGroX6VWjQIE9Syf2Wby2oOl/39KLfy0= github.com/charmbracelet/bubbles v0.18.0/go.mod h1:08qhZhtIwzgrtBjAcJnij1t1H0ZRjwHyGsy6AL11PSw= -github.com/charmbracelet/bubbletea v0.26.3 h1:iXyGvI+FfOWqkB2V07m1DF3xxQijxjY2j8PqiXYqasg= -github.com/charmbracelet/bubbletea v0.26.3/go.mod h1:bpZHfDHTYJC5g+FBK+ptJRCQotRC+Dhh3AoMxa/2+3Q= +github.com/charmbracelet/bubbletea v0.26.4 h1:2gDkkzLZaTjMl/dQBpNVtnvcCxsh/FCkimep7FC9c40= +github.com/charmbracelet/bubbletea v0.26.4/go.mod h1:P+r+RRA5qtI1DOHNFn0otoNwB4rn+zNAzSj/EXz6xU0= github.com/charmbracelet/glamour v0.7.0 h1:2BtKGZ4iVJCDfMF229EzbeR1QRKLWztO9dMtjmqZSng= github.com/charmbracelet/glamour v0.7.0/go.mod h1:jUMh5MeihljJPQbJ/wf4ldw2+yBP59+ctV36jASy7ps= github.com/charmbracelet/lipgloss v0.11.0 h1:UoAcbQ6Qml8hDwSWs0Y1cB5TEQuZkDPH/ZqwWWYTG4g= github.com/charmbracelet/lipgloss v0.11.0/go.mod h1:1UdRTH9gYgpcdNN5oBtjbu/IzNKtzVtb7sqN1t9LNn8= -github.com/charmbracelet/x/ansi v0.1.1 h1:CGAduulr6egay/YVbGc8Hsu8deMg1xZ/bkaXTPi1JDk= -github.com/charmbracelet/x/ansi v0.1.1/go.mod h1:dk73KoMTT5AX5BsX0KrqhsTqAnhZZoCBjs7dGWp4Ktw= +github.com/charmbracelet/x/ansi v0.1.2 h1:6+LR39uG8DE6zAmbu023YlqjJHkYXDF1z36ZwzO4xZY= +github.com/charmbracelet/x/ansi v0.1.2/go.mod h1:dk73KoMTT5AX5BsX0KrqhsTqAnhZZoCBjs7dGWp4Ktw= github.com/charmbracelet/x/input v0.1.0 h1:TEsGSfZYQyOtp+STIjyBq6tpRaorH0qpwZUj8DavAhQ= github.com/charmbracelet/x/input v0.1.0/go.mod h1:ZZwaBxPF7IG8gWWzPUVqHEtWhc1+HXJPNuerJGRGZ28= github.com/charmbracelet/x/term v0.1.1 h1:3cosVAiPOig+EV4X9U+3LDgtwwAoEzJjNdwbXDjF6yI= @@ -259,14 +259,14 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/exp v0.0.0-20240525044651-4c93da0ed11d h1:N0hmiNbwsSNwHBAvR3QB5w25pUwH4tK0Y/RltD1j1h4= -golang.org/x/exp v0.0.0-20240525044651-4c93da0ed11d/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 h1:LoYXNGAShUG3m/ehNk4iFctuhGX/+R1ZpfJ4/ia80JM= +golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= +golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -276,8 +276,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -297,15 +297,15 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= -golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -315,14 +315,14 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.21.0 h1:qc0xYgIbsSDt9EyWz05J5wfa7LOVW0YTLOXrqdLAWIw= -golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= +golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= golang.org/x/vuln v1.0.4 h1:SP0mPeg2PmGCu03V+61EcQiOjmpri2XijexKdzv8Z1I= golang.org/x/vuln v1.0.4/go.mod h1:NbJdUQhX8jY++FtuhrXs2Eyx0yePo9pF7nPlIjo9aaQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From a579fdfd6c1edc3cc4ad4a97375ce0167abd5532 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 5 Jun 2024 03:59:11 +0200 Subject: [PATCH 65/68] chore(deps): lock file maintenance (#1018) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Update | Change | |---|---| | lockFileMaintenance | All locks refreshed | 🔧 This Pull Request updates lock files to use the latest dependency versions. --- ### Configuration 📅 **Schedule**: Branch creation - "before 4am on monday" in timezone Australia/Sydney, Automerge - At any time (no schedule defined). đŸšĻ **Automerge**: Disabled by config. Please merge this manually once you are satisfied. â™ģ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. đŸ‘ģ **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/google/osv-scanner). --- docs/Gemfile.lock | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock index 29cbe13e50f..658441fecdd 100644 --- a/docs/Gemfile.lock +++ b/docs/Gemfile.lock @@ -1,7 +1,7 @@ GEM remote: https://rubygems.org/ specs: - activesupport (7.1.3.2) + activesupport (7.1.3.3) base64 bigdecimal concurrent-ruby (~> 1.0, >= 1.0.2) @@ -14,14 +14,14 @@ GEM addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) base64 (0.2.0) - bigdecimal (3.1.7) + bigdecimal (3.1.8) coffee-script (2.4.1) coffee-script-source execjs coffee-script-source (1.12.2) colorator (1.1.0) commonmarker (0.23.10) - concurrent-ruby (1.2.3) + concurrent-ruby (1.3.1) connection_pool (2.4.1) dnsruby (1.72.1) simpleidn (~> 0.2.1) @@ -37,7 +37,7 @@ GEM faraday-net_http (>= 2.0, < 3.2) faraday-net_http (3.1.0) net-http - ffi (1.16.3) + ffi (1.17.0-x86_64-linux-gnu) forwardable-extended (2.6.0) gemoji (4.1.0) github-pages (231) @@ -95,7 +95,7 @@ GEM activesupport (>= 2) nokogiri (>= 1.4) http_parser.rb (0.8.0) - i18n (1.14.4) + i18n (1.14.5) concurrent-ruby (~> 1.0) jekyll (3.9.5) addressable (~> 2.4) @@ -218,7 +218,7 @@ GEM jekyll (>= 3.5, < 5.0) jekyll-feed (~> 0.9) jekyll-seo-tag (~> 2.1) - minitest (5.22.3) + minitest (5.23.1) mutex_m (0.2.0) net-http (0.4.1) uri @@ -230,9 +230,9 @@ GEM pathutil (0.16.2) forwardable-extended (~> 2.6) public_suffix (5.0.5) - racc (1.7.3) + racc (1.8.0) rb-fsevent (0.11.2) - rb-inotify (0.10.1) + rb-inotify (0.11.1) ffi (~> 1.0) rexml (3.2.8) strscan (>= 3.0.9) @@ -247,8 +247,7 @@ GEM sawyer (0.9.2) addressable (>= 2.3.5) faraday (>= 0.17.3, < 3) - simpleidn (0.2.2) - unf (~> 0.1.4) + simpleidn (0.2.3) strscan (3.1.0) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) @@ -256,9 +255,6 @@ GEM ethon (>= 0.9.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - unf (0.1.4) - unf_ext - unf_ext (0.0.9.1) unicode-display_width (1.8.0) uri (0.13.0) webrick (1.8.1) From 21cdb2964f2436ca46bfc1518e0d3d8df0709bb2 Mon Sep 17 00:00:00 2001 From: Holly Gong <39108850+hogo6002@users.noreply.github.com> Date: Wed, 5 Jun 2024 13:05:07 +1000 Subject: [PATCH 66/68] Update test snapshots (#1022) --- cmd/osv-scanner/__snapshots__/main_test.snap | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cmd/osv-scanner/__snapshots__/main_test.snap b/cmd/osv-scanner/__snapshots__/main_test.snap index 0fe1c8dd693..f2a1876d277 100755 --- a/cmd/osv-scanner/__snapshots__/main_test.snap +++ b/cmd/osv-scanner/__snapshots__/main_test.snap @@ -133,6 +133,8 @@ Loaded filter from: /fixtures/go-project/osv-scanner.toml | https://osv.dev/GO-2024-2609 | | Go | stdlib | 1.21.7 | fixtures/go-project/go.mod | | https://osv.dev/GO-2024-2610 | | Go | stdlib | 1.21.7 | fixtures/go-project/go.mod | | https://osv.dev/GO-2024-2687 | | Go | stdlib | 1.21.7 | fixtures/go-project/go.mod | +| https://osv.dev/GO-2024-2887 | | Go | stdlib | 1.21.7 | fixtures/go-project/go.mod | +| https://osv.dev/GO-2024-2888 | | Go | stdlib | 1.21.7 | fixtures/go-project/go.mod | +------------------------------+------+-----------+---------+---------+----------------------------+ --- @@ -429,6 +431,7 @@ Scanned /fixtures/call-analysis-go-project/go.mod file and found 4 pack | https://osv.dev/GO-2024-2598 | | Go | stdlib | 1.19 | fixtures/call-analysis-go-project/go.mod | | https://osv.dev/GO-2024-2599 | | Go | stdlib | 1.19 | fixtures/call-analysis-go-project/go.mod | | https://osv.dev/GO-2024-2687 | | Go | stdlib | 1.19 | fixtures/call-analysis-go-project/go.mod | +| https://osv.dev/GO-2024-2887 | | Go | stdlib | 1.19 | fixtures/call-analysis-go-project/go.mod | +-------------------------------------+------+-----------+-----------------------------+---------+------------------------------------------+ | Uncalled vulnerabilities | | | | | | +-------------------------------------+------+-----------+-----------------------------+---------+------------------------------------------+ @@ -446,6 +449,7 @@ Scanned /fixtures/call-analysis-go-project/go.mod file and found 4 pack | https://osv.dev/GO-2024-2600 | | Go | stdlib | 1.19 | fixtures/call-analysis-go-project/go.mod | | https://osv.dev/GO-2024-2609 | | Go | stdlib | 1.19 | fixtures/call-analysis-go-project/go.mod | | https://osv.dev/GO-2024-2610 | | Go | stdlib | 1.19 | fixtures/call-analysis-go-project/go.mod | +| https://osv.dev/GO-2024-2888 | | Go | stdlib | 1.19 | fixtures/call-analysis-go-project/go.mod | +-------------------------------------+------+-----------+-----------------------------+---------+------------------------------------------+ --- From 4e5c43afa463d9a2d8560db7cf7790bc6888a32e Mon Sep 17 00:00:00 2001 From: Michael Kedar Date: Wed, 5 Jun 2024 13:26:07 +1000 Subject: [PATCH 67/68] Fix broken TUI styling (#1023) lipgloss v0.11.0 made it so that all the `Style` methods no longer mutate the style, which I was relying on. --- cmd/osv-scanner/fix/model.go | 12 ++++++------ internal/tui/in-place-info.go | 4 ++-- internal/tui/vuln-list.go | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cmd/osv-scanner/fix/model.go b/cmd/osv-scanner/fix/model.go index 998658e3595..b404fdb3b3d 100644 --- a/cmd/osv-scanner/fix/model.go +++ b/cmd/osv-scanner/fix/model.go @@ -94,11 +94,11 @@ func (m *model) setTermSize(w, h int) { // resize the views to the calculated dimensions m.mainViewWidth = viewWidth m.mainViewHeight = viewHeight - m.mainViewStyle.Width(paddedWidth).Height(paddedHeight) + m.mainViewStyle = m.mainViewStyle.Width(paddedWidth).Height(paddedHeight) m.infoViewWidth = viewWidth m.infoViewHeight = viewHeight - m.infoViewStyle.Width(paddedWidth).Height(paddedHeight) + m.infoViewStyle = m.infoViewStyle.Width(paddedWidth).Height(paddedHeight) m.st.Resize(m.mainViewWidth, m.mainViewHeight) m.st.ResizeInfo(m.infoViewWidth, m.infoViewHeight) @@ -106,11 +106,11 @@ func (m *model) setTermSize(w, h int) { func (m *model) getBorderStyles() (lipgloss.Style, lipgloss.Style) { if m.st.IsInfoFocused() { - m.infoViewStyle.UnsetBorderForeground() - m.mainViewStyle.BorderForeground(tui.ColorDisabled) + m.infoViewStyle = m.infoViewStyle.UnsetBorderForeground() + m.mainViewStyle = m.mainViewStyle.BorderForeground(tui.ColorDisabled) } else { - m.infoViewStyle.BorderForeground(tui.ColorDisabled) - m.mainViewStyle.UnsetBorderForeground() + m.infoViewStyle = m.infoViewStyle.BorderForeground(tui.ColorDisabled) + m.mainViewStyle = m.mainViewStyle.UnsetBorderForeground() } return m.mainViewStyle, m.infoViewStyle diff --git a/internal/tui/in-place-info.go b/internal/tui/in-place-info.go index 1ab3500eca3..1f26c1195c8 100644 --- a/internal/tui/in-place-info.go +++ b/internal/tui/in-place-info.go @@ -77,8 +77,8 @@ func NewInPlaceInfo(res remediation.InPlaceResult) *inPlaceInfo { } st := table.DefaultStyles() - st.Header.Bold(false).BorderStyle(lipgloss.NormalBorder()).BorderBottom(true) - st.Selected.Foreground(ColorPrimary) + st.Header = st.Header.Bold(false).BorderStyle(lipgloss.NormalBorder()).BorderBottom(true) + st.Selected = st.Selected.Foreground(ColorPrimary) info.Model = table.New( table.WithColumns(cols), diff --git a/internal/tui/vuln-list.go b/internal/tui/vuln-list.go index 42f9e32d39a..dc90ea06b84 100644 --- a/internal/tui/vuln-list.go +++ b/internal/tui/vuln-list.go @@ -94,7 +94,7 @@ func (v *vulnList) preambleHeight() int { func (v *vulnList) Resize(w, h int) { v.SetWidth(w) v.SetHeight(h - v.preambleHeight()) - v.Styles.TitleBar.Width(w) + v.Styles.TitleBar = v.Styles.TitleBar.Width(w) if v.currVulnInfo != nil { v.currVulnInfo.Resize(w, h) } @@ -176,7 +176,7 @@ func (d vulnListItemDelegate) Render(w io.Writer, m list.Model, index int, listI idStyle := lipgloss.NewStyle().Width(d.idWidth).Align(lipgloss.Left) if index == m.Index() { cursor = SelectedTextStyle.Render(">") - idStyle.Inherit(SelectedTextStyle) + idStyle = idStyle.Inherit(SelectedTextStyle) } id := idStyle.Render(vuln.Vulnerability.ID) severity := RenderSeverityShort(vuln.Vulnerability.Severity) From 8fd553ab0e5931754fe86b1a540f13d9a6f361ac Mon Sep 17 00:00:00 2001 From: Holly Gong <39108850+hogo6002@users.noreply.github.com> Date: Wed, 5 Jun 2024 14:50:52 +1000 Subject: [PATCH 68/68] Upgrade go version (#1024) --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index de93666cbe1..49ed8731e04 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/google/osv-scanner -go 1.21.10 +go 1.21.11 require ( deps.dev/api/v3 v3.0.0-20240516073147-b352d7eeeae6