From 0d293b81154b77c29900d89577a6b4ed1b725b93 Mon Sep 17 00:00:00 2001 From: Adrian Vogelsgesang Date: Thu, 2 May 2024 14:56:54 +0200 Subject: [PATCH] feat(coverage): Basic test coverage support (#366) This commit lays the foundation for displaying coverage results from `bazel coverage`. Currently, the functionality is only exposed through the user-defined tasks in the `tasks.json`. It is thereby a bit hard to discover. But this is fine for the time being, because coverage still has a couple of rough edges anyway. As soon as it is more stable, we should add builtin commands and expose coverage runs also in the "Bazel Build Target" tree. Changes in this commit: * Bumps the VS Code version to 1.88, i.e. the first VS Code version which supports the test coverage API. * Upgrades to ES2022. I wanted to use `replaceAll` which was introduced in ES2021. VS Code 1.88 is based on Node 18 which in turn is based on V8 10.1. V8 10.18 supports ECMA-262 also known as ES2023. However, ES2023 is not yet available a target language in the `tsconfig.json`. Furthermore, Firefox does not fully support ES2023, yet. While web browsers are currently not relevant, they might become so in the future if we want to turn this into a browser-enabled VSCode extension. An upgrade to ES2021 would have been sufficient, but I went directly to ES2022 because it might have some of the new features might also turn out useful. * Introduces a custom LCOV parser. I could not find any other high-quality open-source parser. E.g., most other parser don't properly parse function names with `:` and / or `,` in them. * Introduces test cases for that custom LCOV parser. * Add the test cases to GitHub Actions. I followed the instructions from https://code.visualstudio.com/api/working-with-extensions/continuous-integration. Future work: * Support for branch coverage * Demangling of function names * Builtin commands to trigger coverage runs & offer them in the "Bazel Build Tree" Tested with: Java, C++, Go, Rust Untested: Python, Swift, Kotlin, Scala and many more This is the first step towards #362 --- .github/workflows/build.yml | 3 + .gitignore | 1 + .vscode-test.js | 6 + .vscodeignore | 1 + README.md | 46 +- eslint.config.js | 7 +- package-lock.json | 4255 ++++++++++++++++++++++++------ package.json | 13 +- src/bazel/tasks.ts | 112 +- src/extension/extension.ts | 3 + src/test-explorer/index.ts | 49 + src/test-explorer/lcov_parser.ts | 229 ++ test/lcov/README.md | 10 + test/lcov/cpp.lcov | 3426 ++++++++++++++++++++++++ test/lcov/go.lcov | 1184 +++++++++ test/lcov/java.lcov | 39 + test/lcov/rust.lcov | 531 ++++ test/lcov_parser.test.ts | 204 ++ tsconfig.json | 4 +- 19 files changed, 9351 insertions(+), 772 deletions(-) create mode 100644 .vscode-test.js create mode 100644 src/test-explorer/index.ts create mode 100644 src/test-explorer/lcov_parser.ts create mode 100644 test/lcov/README.md create mode 100644 test/lcov/cpp.lcov create mode 100644 test/lcov/go.lcov create mode 100644 test/lcov/java.lcov create mode 100644 test/lcov/rust.lcov create mode 100644 test/lcov_parser.test.ts diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b25f045d..f765eaae 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -40,6 +40,9 @@ jobs: - name: Lint run: npm run check-lint + - run: xvfb-run -a npm test + if: runner.os == 'Linux' + - name: Package VS Code extension run: npm run package diff --git a/.gitignore b/.gitignore index 5e7c9888..21ce8e4b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ out node_modules +.vscode-test *.vsix # Ignore the generated .d.ts and .js files for protos that end up in the src/ diff --git a/.vscode-test.js b/.vscode-test.js new file mode 100644 index 00000000..9554a8dd --- /dev/null +++ b/.vscode-test.js @@ -0,0 +1,6 @@ +const { defineConfig } = require("@vscode/test-cli"); + +module.exports = defineConfig({ + files: "out/test/**/*.test.js", + mocha: { ui: "bdd" }, +}); diff --git a/.vscodeignore b/.vscodeignore index 09619021..a4b2e1d1 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -4,6 +4,7 @@ out/test/** scripts/** src/** test/** +.vscode-test/ **/*.map diff --git a/README.md b/README.md index 70f92ed2..7742f896 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,8 @@ This extension provides support for Bazel in Visual Studio. - **Buildifier** integration to lint and format your Bazel files (requires that [Buildifier](https://github.com/bazelbuild/buildtools/releases) be installed) - **Bazel Task** definitions for `tasks.json` +- **Coverage Support** showing coverage results from `bazel coverage` directly + in VS Code. - Debug Starlark code in your `.bzl` files during a build (set breakpoints, step through code, inspect variables, etc.) @@ -77,7 +79,7 @@ We can't currently make any recommendation between these two. Both are under act Bazel tasks can be configured from the `tasks.json` using the following structure: -```json +```jsonc { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format @@ -88,8 +90,8 @@ Bazel tasks can be configured from the `tasks.json` using the following structur "type": "bazel", "command": "test", "targets": ["${input:pickFlakyTest}"], - "options": ["--runs_per_test=9"] - } + "options": ["--runs_per_test=9"], + }, ], "inputs": [ { @@ -98,13 +100,43 @@ Bazel tasks can be configured from the `tasks.json` using the following structur "command": "bazel.pickTarget", "args": { "query": "kind('.*_test', //...:*)", - "placeHolder": "Which test to check for flakyness?" - } - } - ] + "placeHolder": "Which test to check for flakyness?", + }, + }, + ], +} +``` + +## Coverage support (Experimental) + +For all `coverage` tasks, the coverage results are automatically loaded into VS +Code upon completion of the task. E.g., you could define your own task to +display the coverage provided by your integration tests using the following task +definition: + +```jsonc +{ + "label": "Show test coverage from integration test", + "type": "bazel", + "command": "coverage", + "targets": ["//test/integration/...", "//cpp/test/integration/..."], + "options": ["--instrumentation_filter=.*"], } ``` +You might need additional Bazel `options` to get the intended coverage results. +In particular if are using remote builds, you might need to use the +`--experimental_split_coverage_postprocessing` and `--experimental_fetch_all_coverage_outputs` +options. See the documentation on [Code Coverage with Bazel](https://bazel.build/configure/coverage) +for more details. + +Code coverage support in this extension is still rather fresh and might still +have rough edges. It was tested with the Java, C++, Go and Rust rules. +In case you are using the code coverage integration with any other language +(Python, Swift, Kotlin, Scala, ...), please let us know how things are going in +bazelbuild/vscode-bazel#367. Please share both positive and negative experiences +you might have. + ## Contributing If you would like to contribute to the Bazel Visual Studio extension, please diff --git a/eslint.config.js b/eslint.config.js index 87ab9a0c..38c46f8b 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -175,12 +175,13 @@ module.exports = tseslint.config( }, }, { - files: ["eslint.config.js"], - // `@eslint/js` is currnetly missing type information. + // `@eslint/js` is currently missing type information. // Re-enable the type checks as soon as we have type infos. + // For vscode-test.js, we also don't use TypeScript, yet. + files: ["eslint.config.js", ".vscode-test.js"], extends: [tseslint.configs.disableTypeChecked], rules: { - // Re-enable as soon as we are using ES modules for this config file. + // Re-enable as soon as we are using ES modules for the config files. "@typescript-eslint/no-var-requires": "off", }, }, diff --git a/package-lock.json b/package-lock.json index b77ca52a..f2b284eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,21 +17,25 @@ "which": "^4.0.0" }, "devDependencies": { + "@types/mocha": "^10.0.6", "@types/node": "^16.11.7", - "@types/vscode": "^1.85.0", + "@types/vscode": "^1.88.0", "@types/which": "^3.0.3", + "@vscode/test-cli": "^0.0.9", + "@vscode/test-electron": "^2.3.9", "@vscode/vsce": "^2.24.0", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-jsdoc": "^48.2.2", "js-yaml": "^4.1.0", + "mocha": "^10.4.0", "prettier": "^3.2.5", "typescript": "^5.4.4", "typescript-eslint": "^7.5.0", "vscode-tmgrammar-test": "^0.1.3" }, "engines": { - "vscode": "^1.85.0" + "vscode": "^1.88.0" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -43,6 +47,258 @@ "node": ">=0.10.0" } }, + "node_modules/@azure/abort-controller": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", + "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", + "dev": true, + "dependencies": { + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@azure/core-auth": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.7.2.tgz", + "integrity": "sha512-Igm/S3fDYmnMq1uKS38Ae1/m37B3zigdlZw+kocwEhh5GjyKjPrXKO2J6rzpC1wAxrNil/jX9BJRqBshyjnF3g==", + "dev": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-auth/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-client": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz", + "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==", + "dev": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-rest-pipeline": "^1.9.1", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.6.1", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-client/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.15.2.tgz", + "integrity": "sha512-BmWfpjc/QXc2ipHOh6LbUzp3ONCaa6xzIssTU0DwH9bbYNXJlGUL6tujx5TrbVd/QQknmS+vlQJGrCq2oL1gZA==", + "dev": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.3.0", + "@azure/logger": "^1.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@azure/core-tracing": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.1.2.tgz", + "integrity": "sha512-dawW9ifvWAWmUm9/h+/UQ2jrdvjCJ7VJEuCJ6XVNudzcOwm53BFZH4Q845vjfgoUAM8ZxokvVNxNxAITc502YA==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.0.tgz", + "integrity": "sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw==", + "dev": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-util/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/identity": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.2.0.tgz", + "integrity": "sha512-ve3aYv79qXOJ8wRxQ5jO0eIz2DZ4o0TyME4m4vlGV5YyePddVZ+pFMzusAMODNAflYAAv1cBIhKnd4xytmXyig==", + "dev": true, + "dependencies": { + "@azure/abort-controller": "^1.0.0", + "@azure/core-auth": "^1.5.0", + "@azure/core-client": "^1.4.0", + "@azure/core-rest-pipeline": "^1.1.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.3.0", + "@azure/logger": "^1.0.0", + "@azure/msal-browser": "^3.11.1", + "@azure/msal-node": "^2.6.6", + "events": "^3.0.0", + "jws": "^4.0.0", + "open": "^8.0.0", + "stoppable": "^1.1.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/logger": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.2.tgz", + "integrity": "sha512-l170uE7bsKpIU6B/giRc9i4NI0Mj+tANMMMxf7Zi/5cKzEqPayP7+X1WPrG7e+91JgY8N+7K7nF2WOi7iVhXvg==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/msal-browser": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.13.0.tgz", + "integrity": "sha512-fD906nmJei3yE7la6DZTdUtXKvpwzJURkfsiz9747Icv4pit77cegSm6prJTKLQ1fw4iiZzrrWwxnhMLrTf5gQ==", + "dev": true, + "dependencies": { + "@azure/msal-common": "14.9.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-common": { + "version": "14.9.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.9.0.tgz", + "integrity": "sha512-yzBPRlWPnTBeixxLNI3BBIgF5/bHpbhoRVuuDBnYjCyWRavaPUsKAHUDYLqpGkBLDciA6TCc6GOxN4/S3WiSxg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-node": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.7.0.tgz", + "integrity": "sha512-wXD8LkUvHICeSWZydqg6o8Yvv+grlBEcmLGu+QEI4FcwFendbTEZrlSygnAXXSOCVaGAirWLchca35qrgpO6Jw==", + "dev": true, + "dependencies": { + "@azure/msal-common": "14.9.0", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, "node_modules/@es-joy/jsdoccomment": { "version": "0.42.0", "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.42.0.tgz", @@ -104,29 +360,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@eslint/eslintrc/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==", - "dev": true - }, "node_modules/@eslint/js": { "version": "8.57.0", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", @@ -150,29 +383,6 @@ "node": ">=10.10.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@humanwhocodes/config-array/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==", - "dev": true - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -192,6 +402,136 @@ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -227,6 +567,16 @@ "node": ">= 8" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -281,6 +631,21 @@ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -292,6 +657,12 @@ "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz", "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==" }, + "node_modules/@types/mocha": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", + "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", + "dev": true + }, "node_modules/@types/node": { "version": "16.18.68", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.68.tgz", @@ -305,9 +676,9 @@ "dev": true }, "node_modules/@types/vscode": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.85.0.tgz", - "integrity": "sha512-CF/RBon/GXwdfmnjZj0WTUMZN5H6YITOfBCP4iEZlOtVQXuzw6t7Le7+cR+7JzdMrnlm7Mfp49Oj2TuSXIWo3g==", + "version": "1.88.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.88.0.tgz", + "integrity": "sha512-rWY+Bs6j/f1lvr8jqZTyp5arRMfovdxolcqGi+//+cPDOh8SBvzXH90e7BiSXct5HJ9HGW6jATchbRTpTJpEkw==", "dev": true }, "node_modules/@types/which": { @@ -351,29 +722,6 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/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==", - "dev": true - }, "node_modules/@typescript-eslint/parser": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.5.0.tgz", @@ -402,29 +750,6 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/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==", - "dev": true - }, "node_modules/@typescript-eslint/scope-manager": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.5.0.tgz", @@ -469,29 +794,6 @@ } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/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==", - "dev": true - }, "node_modules/@typescript-eslint/types": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.5.0.tgz", @@ -542,23 +844,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", @@ -574,12 +859,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@typescript-eslint/typescript-estree/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==", - "dev": true - }, "node_modules/@typescript-eslint/utils": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.5.0.tgz", @@ -628,12 +907,97 @@ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true }, + "node_modules/@vscode/test-cli": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/@vscode/test-cli/-/test-cli-0.0.9.tgz", + "integrity": "sha512-vsl5/ueE3Jf0f6XzB0ECHHMsd5A0Yu6StElb8a+XsubZW7kHNAOw4Y3TSSuDzKEpLnJ92nbMy1Zl+KLGCE6NaA==", + "dev": true, + "dependencies": { + "@types/mocha": "^10.0.2", + "c8": "^9.1.0", + "chokidar": "^3.5.3", + "enhanced-resolve": "^5.15.0", + "glob": "^10.3.10", + "minimatch": "^9.0.3", + "mocha": "^10.2.0", + "supports-color": "^9.4.0", + "yargs": "^17.7.2" + }, + "bin": { + "vscode-test": "out/bin.mjs" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@vscode/test-cli/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@vscode/test-cli/node_modules/glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vscode/test-cli/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vscode/test-electron": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.9.tgz", + "integrity": "sha512-z3eiChaCQXMqBnk2aHHSEkobmC2VRalFQN0ApOAtydL172zXGxTwGrRtviT5HnUB+Q+G3vtEYFtuQkYqBzYgMA==", + "dev": true, + "dependencies": { + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "jszip": "^3.10.1", + "semver": "^7.5.2" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/@vscode/vsce": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.25.0.tgz", - "integrity": "sha512-VXMCGUaP6wKBadA7vFQdsksxkBAMoh4ecZgXBwauZMASAgnwYesHyLnqIyWYeRwjy2uEpitHvz/1w5ENnR30pg==", + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.26.0.tgz", + "integrity": "sha512-v54ltgMzUG8lGY0kAgaOlry57xse1RlWzes9FotfGEx+Fr05KeR8rZicQzEMDmi9QnOgVWHuiEq+xA2HWkAz+Q==", "dev": true, "dependencies": { + "@azure/identity": "^4.1.0", "azure-devops-node-api": "^12.5.0", "chalk": "^2.4.2", "cheerio": "^1.0.0-rc.9", @@ -667,13 +1031,75 @@ "keytar": "^7.7.0" } }, - "node_modules/@vscode/vsce/node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "node_modules/@vscode/vsce/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==", "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, "engines": { - "node": ">= 6" + "node": ">=4" + } + }, + "node_modules/@vscode/vsce/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==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vscode/vsce/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==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@vscode/vsce/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@vscode/vsce/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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@vscode/vsce/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vscode/vsce/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/acorn": { @@ -697,6 +1123,18 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "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/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -713,6 +1151,15 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -723,15 +1170,31 @@ } }, "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==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, "node_modules/are-docs-informative": { @@ -800,6 +1263,18 @@ ], "optional": true }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -812,6 +1287,21 @@ "readable-stream": "^3.4.0" } }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -846,6 +1336,12 @@ "node": ">=8" } }, + "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==", + "dev": true + }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -880,13 +1376,44 @@ "node": "*" } }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "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": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true + }, + "node_modules/c8": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-9.1.0.tgz", + "integrity": "sha512-mBWcT5iqNir1zIkzSPyI3NCR9EZCVI3WUD+AVO17MVWTSFNyUueXE82qTeampNtTr+ilN/5Ua3j24LgbCKjDVg==", "dev": true, "dependencies": { - "es-define-property": "^1.0.0", + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^3.1.1", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.1.6", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1" + }, + "bin": { + "c8": "bin/c8.js" + }, + "engines": { + "node": ">=14.14.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", @@ -908,18 +1435,44 @@ "node": ">=6" } }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "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==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/cheerio": { @@ -960,6 +1513,42 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.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" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", @@ -967,6 +1556,20 @@ "dev": true, "optional": true }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/cockatiel": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.1.2.tgz", @@ -977,18 +1580,21 @@ } }, "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==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "color-name": "1.1.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "node_modules/combined-stream": { @@ -1004,12 +1610,12 @@ } }, "node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true, "engines": { - "node": "^12.20.0 || >=14" + "node": ">= 6" } }, "node_modules/comment-parser": { @@ -1027,6 +1633,18 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1090,6 +1708,35 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", @@ -1139,6 +1786,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -1159,9 +1815,9 @@ } }, "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true, "engines": { "node": ">=0.3.1" @@ -1246,6 +1902,27 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "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/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==", + "dev": true + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -1256,6 +1933,19 @@ "once": "^1.4.0" } }, + "node_modules/enhanced-resolve": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -1289,13 +1979,25 @@ "node": ">= 0.4" } }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint": { @@ -1388,41 +2090,6 @@ "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, - "node_modules/eslint-plugin-jsdoc/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-plugin-jsdoc/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==", - "dev": true - }, "node_modules/eslint-scope": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", @@ -1451,150 +2118,45 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/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==", + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=0.10" } }, - "node_modules/eslint/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==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/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==", - "dev": true - }, - "node_modules/eslint/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/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==", - "dev": true - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" + "node": ">=4.0" } }, "node_modules/estraverse": { @@ -1615,6 +2177,15 @@ "node": ">=0.10.0" } }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, "node_modules/expand-template": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", @@ -1729,6 +2300,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, "node_modules/flat-cache": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", @@ -1764,6 +2344,22 @@ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -1791,6 +2387,20 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -1800,6 +2410,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -1905,6 +2524,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -1912,12 +2537,12 @@ "dev": true }, "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/has-property-descriptors": { @@ -1968,6 +2593,15 @@ "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==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -1980,6 +2614,12 @@ "node": ">=10" } }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, "node_modules/htmlparser2": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", @@ -1999,6 +2639,33 @@ "entities": "^4.4.0" } }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -2029,6 +2696,12 @@ "node": ">= 4" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -2077,6 +2750,18 @@ "dev": true, "optional": true }, + "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==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/is-builtin-module": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", @@ -2104,6 +2789,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2113,6 +2813,15 @@ "node": ">=0.10.0" } }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -2143,6 +2852,45 @@ "node": ">=8" } }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, "node_modules/isexe": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", @@ -2151,6 +2899,72 @@ "node": ">=16" } }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -2196,6 +3010,82 @@ "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", "dev": true }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dev": true, + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jsonwebtoken/node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dev": true, + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "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/keytar": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", @@ -2239,6 +3129,15 @@ "node": ">= 0.8.0" } }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/linkify-it": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", @@ -2263,12 +3162,70 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/long": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", @@ -2285,6 +3242,21 @@ "node": ">=10" } }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/markdown-it": { "version": "12.3.2", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", @@ -2322,102 +3294,290 @@ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, "engines": { - "node": ">= 8" + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "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==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true, + "optional": true + }, + "node_modules/mocha": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.4.0.tgz", + "integrity": "sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==", + "dev": true, + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "8.1.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.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" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "node_modules/mocha/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==", "dev": true, "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "node_modules/mocha/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, - "bin": { - "mime": "cli.js" + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/mocha/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, "engines": { - "node": ">= 0.6" + "node": ">= 6" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "dependencies": { - "mime-db": "1.52.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">=10" } }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "optional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/mocha/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "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": "*" + "node": ">=10" } }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "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==", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" + "node_modules/mocha/node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" } }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true, - "optional": true + "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==", + "dev": true }, "node_modules/mute-stream": { "version": "0.0.8", @@ -2439,9 +3599,9 @@ "dev": true }, "node_modules/node-abi": { - "version": "3.58.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.58.0.tgz", - "integrity": "sha512-pXY1jnGf5T7b8UNzWzIqf0EkX4bx/w8N2AvwlGnk2SYYA/kzDVPaH0Dh0UG4EwxBB5eKOIZKPr8VAHSHL1DPGg==", + "version": "3.62.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.62.0.tgz", + "integrity": "sha512-CPMcGa+y33xuL1E0TcNIu4YyaZCxnnvkVaEXrsosR3FxN+fV8xvb7Mzpb7IgKler10qeMkE6+Dp8qJhpzdq35g==", "dev": true, "optional": true, "dependencies": { @@ -2458,6 +3618,15 @@ "dev": true, "optional": true }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -2488,6 +3657,23 @@ "wrappy": "1" } }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -2535,6 +3721,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -2617,6 +3809,31 @@ "node": ">=8" } }, + "node_modules/path-scurry": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -2695,6 +3912,12 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "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==", + "dev": true + }, "node_modules/protobufjs": { "version": "6.8.8", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.8.tgz", @@ -2780,6 +4003,15 @@ } ] }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -2819,18 +4051,39 @@ } }, "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, - "optional": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "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.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" }, "engines": { - "node": ">= 6" + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/resolve-from": { @@ -2876,25 +4129,10 @@ } }, "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "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" - } - ], - "optional": true + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "node_modules/sax": { "version": "1.3.0", @@ -2916,6 +4154,15 @@ "node": ">=10" } }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -2933,6 +4180,12 @@ "node": ">= 0.4" } }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -2972,6 +4225,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", @@ -3050,14 +4315,52 @@ "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", "dev": true }, + "node_modules/stoppable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", + "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", + "dev": true, + "engines": { + "node": ">=4", + "npm": ">=6" + } + }, "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "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==", "dev": true, - "optional": true, "dependencies": { - "safe-buffer": "~5.2.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/strip-ansi": { @@ -3072,6 +4375,19 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -3085,15 +4401,24 @@ } }, "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==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", + "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", "dev": true, - "dependencies": { - "has-flag": "^3.0.0" + "engines": { + "node": ">=12" }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/tar-fs": { @@ -3126,6 +4451,35 @@ "node": ">=6" } }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -3165,6 +4519,12 @@ "typescript": ">=4.2.0" } }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", @@ -3292,8 +4652,30 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "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, - "optional": true + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } }, "node_modules/vscode-debugadapter": { "version": "1.37.1", @@ -3394,6 +4776,95 @@ "vscode-tmgrammar-test": "dist/unit.js" } }, + "node_modules/vscode-tmgrammar-test/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==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/vscode-tmgrammar-test/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==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/vscode-tmgrammar-test/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==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/vscode-tmgrammar-test/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/vscode-tmgrammar-test/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/vscode-tmgrammar-test/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/vscode-tmgrammar-test/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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/vscode-tmgrammar-test/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/vscode-tmgrammar-test/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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/vscode-uri": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.2.tgz", @@ -3413,6 +4884,47 @@ "node": "^16.13.0 || >=18.0.0" } }, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "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==", + "dev": true, + "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/wrap-ansi-cjs": { + "name": "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==", + "dev": true, + "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/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -3441,11 +4953,62 @@ "node": ">=4.0" } }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -3485,6 +5048,212 @@ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", "dev": true }, + "@azure/abort-controller": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", + "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", + "dev": true, + "requires": { + "tslib": "^2.2.0" + } + }, + "@azure/core-auth": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.7.2.tgz", + "integrity": "sha512-Igm/S3fDYmnMq1uKS38Ae1/m37B3zigdlZw+kocwEhh5GjyKjPrXKO2J6rzpC1wAxrNil/jX9BJRqBshyjnF3g==", + "dev": true, + "requires": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.1.0", + "tslib": "^2.6.2" + }, + "dependencies": { + "@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "requires": { + "tslib": "^2.6.2" + } + } + } + }, + "@azure/core-client": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz", + "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==", + "dev": true, + "requires": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-rest-pipeline": "^1.9.1", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.6.1", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "dependencies": { + "@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "requires": { + "tslib": "^2.6.2" + } + } + } + }, + "@azure/core-rest-pipeline": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.15.2.tgz", + "integrity": "sha512-BmWfpjc/QXc2ipHOh6LbUzp3ONCaa6xzIssTU0DwH9bbYNXJlGUL6tujx5TrbVd/QQknmS+vlQJGrCq2oL1gZA==", + "dev": true, + "requires": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.3.0", + "@azure/logger": "^1.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "dependencies": { + "@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "requires": { + "tslib": "^2.6.2" + } + }, + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "requires": { + "debug": "^4.3.4" + } + }, + "http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "requires": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + } + }, + "https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dev": true, + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + } + } + }, + "@azure/core-tracing": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.1.2.tgz", + "integrity": "sha512-dawW9ifvWAWmUm9/h+/UQ2jrdvjCJ7VJEuCJ6XVNudzcOwm53BFZH4Q845vjfgoUAM8ZxokvVNxNxAITc502YA==", + "dev": true, + "requires": { + "tslib": "^2.6.2" + } + }, + "@azure/core-util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.0.tgz", + "integrity": "sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw==", + "dev": true, + "requires": { + "@azure/abort-controller": "^2.0.0", + "tslib": "^2.6.2" + }, + "dependencies": { + "@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "requires": { + "tslib": "^2.6.2" + } + } + } + }, + "@azure/identity": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.2.0.tgz", + "integrity": "sha512-ve3aYv79qXOJ8wRxQ5jO0eIz2DZ4o0TyME4m4vlGV5YyePddVZ+pFMzusAMODNAflYAAv1cBIhKnd4xytmXyig==", + "dev": true, + "requires": { + "@azure/abort-controller": "^1.0.0", + "@azure/core-auth": "^1.5.0", + "@azure/core-client": "^1.4.0", + "@azure/core-rest-pipeline": "^1.1.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.3.0", + "@azure/logger": "^1.0.0", + "@azure/msal-browser": "^3.11.1", + "@azure/msal-node": "^2.6.6", + "events": "^3.0.0", + "jws": "^4.0.0", + "open": "^8.0.0", + "stoppable": "^1.1.0", + "tslib": "^2.2.0" + } + }, + "@azure/logger": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.2.tgz", + "integrity": "sha512-l170uE7bsKpIU6B/giRc9i4NI0Mj+tANMMMxf7Zi/5cKzEqPayP7+X1WPrG7e+91JgY8N+7K7nF2WOi7iVhXvg==", + "dev": true, + "requires": { + "tslib": "^2.6.2" + } + }, + "@azure/msal-browser": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.13.0.tgz", + "integrity": "sha512-fD906nmJei3yE7la6DZTdUtXKvpwzJURkfsiz9747Icv4pit77cegSm6prJTKLQ1fw4iiZzrrWwxnhMLrTf5gQ==", + "dev": true, + "requires": { + "@azure/msal-common": "14.9.0" + } + }, + "@azure/msal-common": { + "version": "14.9.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.9.0.tgz", + "integrity": "sha512-yzBPRlWPnTBeixxLNI3BBIgF5/bHpbhoRVuuDBnYjCyWRavaPUsKAHUDYLqpGkBLDciA6TCc6GOxN4/S3WiSxg==", + "dev": true + }, + "@azure/msal-node": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.7.0.tgz", + "integrity": "sha512-wXD8LkUvHICeSWZydqg6o8Yvv+grlBEcmLGu+QEI4FcwFendbTEZrlSygnAXXSOCVaGAirWLchca35qrgpO6Jw==", + "dev": true, + "requires": { + "@azure/msal-common": "14.9.0", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, "@es-joy/jsdoccomment": { "version": "0.42.0", "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.42.0.tgz", @@ -3526,23 +5295,6 @@ "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } } }, "@eslint/js": { @@ -3551,46 +5303,122 @@ "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true }, - "@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dev": true + }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "requires": { - "ms": "2.1.2" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } } } }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true }, - "@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3617,6 +5445,13 @@ "fastq": "^1.6.0" } }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true + }, "@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -3671,6 +5506,18 @@ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, "@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -3682,6 +5529,12 @@ "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz", "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==" }, + "@types/mocha": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", + "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", + "dev": true + }, "@types/node": { "version": "16.18.68", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.68.tgz", @@ -3695,9 +5548,9 @@ "dev": true }, "@types/vscode": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.85.0.tgz", - "integrity": "sha512-CF/RBon/GXwdfmnjZj0WTUMZN5H6YITOfBCP4iEZlOtVQXuzw6t7Le7+cR+7JzdMrnlm7Mfp49Oj2TuSXIWo3g==", + "version": "1.88.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.88.0.tgz", + "integrity": "sha512-rWY+Bs6j/f1lvr8jqZTyp5arRMfovdxolcqGi+//+cPDOh8SBvzXH90e7BiSXct5HJ9HGW6jATchbRTpTJpEkw==", "dev": true }, "@types/which": { @@ -3723,23 +5576,6 @@ "natural-compare": "^1.4.0", "semver": "^7.5.4", "ts-api-utils": "^1.0.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } } }, "@typescript-eslint/parser": { @@ -3753,23 +5589,6 @@ "@typescript-eslint/typescript-estree": "7.5.0", "@typescript-eslint/visitor-keys": "7.5.0", "debug": "^4.3.4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } } }, "@typescript-eslint/scope-manager": { @@ -3792,23 +5611,6 @@ "@typescript-eslint/utils": "7.5.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } } }, "@typescript-eslint/types": { @@ -3842,15 +5644,6 @@ "balanced-match": "^1.0.0" } }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, "minimatch": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", @@ -3859,12 +5652,6 @@ "requires": { "brace-expansion": "^2.0.1" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true } } }, @@ -3899,12 +5686,75 @@ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true }, + "@vscode/test-cli": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/@vscode/test-cli/-/test-cli-0.0.9.tgz", + "integrity": "sha512-vsl5/ueE3Jf0f6XzB0ECHHMsd5A0Yu6StElb8a+XsubZW7kHNAOw4Y3TSSuDzKEpLnJ92nbMy1Zl+KLGCE6NaA==", + "dev": true, + "requires": { + "@types/mocha": "^10.0.2", + "c8": "^9.1.0", + "chokidar": "^3.5.3", + "enhanced-resolve": "^5.15.0", + "glob": "^10.3.10", + "minimatch": "^9.0.3", + "mocha": "^10.2.0", + "supports-color": "^9.4.0", + "yargs": "^17.7.2" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + } + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "@vscode/test-electron": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.9.tgz", + "integrity": "sha512-z3eiChaCQXMqBnk2aHHSEkobmC2VRalFQN0ApOAtydL172zXGxTwGrRtviT5HnUB+Q+G3vtEYFtuQkYqBzYgMA==", + "dev": true, + "requires": { + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "jszip": "^3.10.1", + "semver": "^7.5.2" + } + }, "@vscode/vsce": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.25.0.tgz", - "integrity": "sha512-VXMCGUaP6wKBadA7vFQdsksxkBAMoh4ecZgXBwauZMASAgnwYesHyLnqIyWYeRwjy2uEpitHvz/1w5ENnR30pg==", + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.26.0.tgz", + "integrity": "sha512-v54ltgMzUG8lGY0kAgaOlry57xse1RlWzes9FotfGEx+Fr05KeR8rZicQzEMDmi9QnOgVWHuiEq+xA2HWkAz+Q==", "dev": true, "requires": { + "@azure/identity": "^4.1.0", "azure-devops-node-api": "^12.5.0", "chalk": "^2.4.2", "cheerio": "^1.0.0-rc.9", @@ -3930,11 +5780,61 @@ "yazl": "^2.2.2" }, "dependencies": { - "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "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==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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==", + "dev": true, + "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -3951,6 +5851,15 @@ "dev": true, "requires": {} }, + "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" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -3963,6 +5872,12 @@ "uri-js": "^4.2.2" } }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -3970,12 +5885,22 @@ "dev": true }, "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==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, "are-docs-informative": { @@ -4024,6 +5949,12 @@ "dev": true, "optional": true }, + "binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true + }, "bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -4034,6 +5965,20 @@ "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "optional": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "boolbase": { @@ -4067,6 +6012,12 @@ "fill-range": "^7.0.1" } }, + "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==", + "dev": true + }, "buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -4084,6 +6035,31 @@ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true }, + "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": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true + }, + "c8": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-9.1.0.tgz", + "integrity": "sha512-mBWcT5iqNir1zIkzSPyI3NCR9EZCVI3WUD+AVO17MVWTSFNyUueXE82qTeampNtTr+ilN/5Ua3j24LgbCKjDVg==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^3.1.1", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.1.6", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1" + } + }, "call-bind": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", @@ -4103,15 +6079,31 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "cheerio": { @@ -4143,6 +6135,33 @@ "domutils": "^3.0.1" } }, + "chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.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" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, "chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", @@ -4150,6 +6169,17 @@ "dev": true, "optional": true }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, "cockatiel": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.1.2.tgz", @@ -4157,18 +6187,18 @@ "dev": true }, "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==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "combined-stream": { @@ -4180,10 +6210,10 @@ "delayed-stream": "~1.0.0" } }, - "commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true }, "comment-parser": { @@ -4198,6 +6228,18 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -4245,6 +6287,21 @@ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + }, "decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", @@ -4279,6 +6336,12 @@ "gopd": "^1.0.1" } }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -4293,9 +6356,9 @@ "optional": true }, "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true }, "dir-glob": { @@ -4353,6 +6416,27 @@ "domhandler": "^5.0.3" } }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "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" + } + }, + "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==", + "dev": true + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -4363,6 +6447,16 @@ "once": "^1.4.0" } }, + "enhanced-resolve": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, "entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -4384,10 +6478,16 @@ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true }, + "escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true + }, "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, "eslint": { @@ -4434,78 +6534,6 @@ "optionator": "^0.9.3", "strip-ansi": "^6.0.1", "text-table": "^0.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.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==", - "dev": true, - "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==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "eslint-config-prettier": { @@ -4530,29 +6558,6 @@ "is-builtin-module": "^3.2.1", "semver": "^7.6.0", "spdx-expression-parse": "^4.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } } }, "eslint-scope": { @@ -4612,6 +6617,12 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, "expand-template": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", @@ -4707,6 +6718,12 @@ "path-exists": "^4.0.0" } }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, "flat-cache": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", @@ -4735,6 +6752,16 @@ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, "form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -4759,12 +6786,25 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, "function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true }, + "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==", + "dev": true + }, "get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -4840,6 +6880,12 @@ "get-intrinsic": "^1.1.3" } }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, "graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -4847,9 +6893,9 @@ "dev": true }, "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "has-property-descriptors": { @@ -4882,6 +6928,12 @@ "function-bind": "^1.1.2" } }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, "hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -4891,6 +6943,12 @@ "lru-cache": "^6.0.0" } }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, "htmlparser2": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", @@ -4903,6 +6961,27 @@ "entities": "^4.4.0" } }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -4916,6 +6995,12 @@ "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -4955,6 +7040,15 @@ "dev": true, "optional": true }, + "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==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, "is-builtin-module": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", @@ -4972,12 +7066,24 @@ } } }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, + "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==", + "dev": true + }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -4999,11 +7105,86 @@ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, "isexe": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==" }, + "istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true + }, + "istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -5043,6 +7224,80 @@ "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", "dev": true }, + "jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dev": true, + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "dependencies": { + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + } + } + }, + "jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "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" + } + }, "keytar": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", @@ -5079,6 +7334,15 @@ "type-check": "~0.4.0" } }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, "linkify-it": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", @@ -5088,14 +7352,50 @@ "uc.micro": "^1.0.1" } }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true }, "lodash.merge": { "version": "4.6.2", @@ -5103,6 +7403,22 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, "long": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", @@ -5116,6 +7432,15 @@ "yallist": "^4.0.0" } }, + "make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "requires": { + "semver": "^7.5.3" + } + }, "markdown-it": { "version": "12.3.2", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", @@ -5201,6 +7526,12 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true + }, "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -5216,6 +7547,145 @@ "dev": true, "optional": true }, + "mocha": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.4.0.tgz", + "integrity": "sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==", + "dev": true, + "requires": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "8.1.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.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" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "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.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", @@ -5236,9 +7706,9 @@ "dev": true }, "node-abi": { - "version": "3.58.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.58.0.tgz", - "integrity": "sha512-pXY1jnGf5T7b8UNzWzIqf0EkX4bx/w8N2AvwlGnk2SYYA/kzDVPaH0Dh0UG4EwxBB5eKOIZKPr8VAHSHL1DPGg==", + "version": "3.62.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.62.0.tgz", + "integrity": "sha512-CPMcGa+y33xuL1E0TcNIu4YyaZCxnnvkVaEXrsosR3FxN+fV8xvb7Mzpb7IgKler10qeMkE6+Dp8qJhpzdq35g==", "dev": true, "optional": true, "requires": { @@ -5252,6 +7722,12 @@ "dev": true, "optional": true }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, "nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -5276,6 +7752,17 @@ "wrappy": "1" } }, + "open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, "optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -5308,6 +7795,12 @@ "p-limit": "^3.0.2" } }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -5371,6 +7864,24 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, + "path-scurry": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "dev": true, + "requires": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true + } + } + }, "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -5422,6 +7933,12 @@ "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "dev": true }, + "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==", + "dev": true + }, "protobufjs": { "version": "6.8.8", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.8.tgz", @@ -5481,6 +7998,15 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -5513,17 +8039,35 @@ } }, "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, - "optional": true, "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "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.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" } }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -5546,11 +8090,10 @@ } }, "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "optional": true + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "sax": { "version": "1.3.0", @@ -5566,6 +8109,15 @@ "lru-cache": "^6.0.0" } }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, "set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -5580,6 +8132,12 @@ "has-property-descriptors": "^1.0.2" } }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -5607,6 +8165,12 @@ "object-inspect": "^1.13.1" } }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + }, "simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", @@ -5654,14 +8218,41 @@ "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", "dev": true }, + "stoppable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", + "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", + "dev": true + }, "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "optional": true, "requires": { - "safe-buffer": "~5.2.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } }, "strip-ansi": { @@ -5673,6 +8264,15 @@ "ansi-regex": "^5.0.1" } }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -5680,13 +8280,16 @@ "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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", + "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", + "dev": true + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true }, "tar-fs": { "version": "2.1.1", @@ -5713,6 +8316,31 @@ "fs-constants": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "optional": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" } }, "text-table": { @@ -5743,6 +8371,12 @@ "dev": true, "requires": {} }, + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", @@ -5833,8 +8467,24 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "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 + }, + "v8-to-istanbul": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", "dev": true, - "optional": true + "requires": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + } }, "vscode-debugadapter": { "version": "1.37.1", @@ -5922,6 +8572,76 @@ "glob": "^7.1.6", "vscode-oniguruma": "^1.5.1", "vscode-textmate": "^7.0.1" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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==", + "dev": true, + "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "vscode-uri": { @@ -5937,6 +8657,34 @@ "isexe": "^3.1.1" } }, + "workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -5959,11 +8707,50 @@ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "dev": true }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "requires": { + "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": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + } + }, "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", diff --git a/package.json b/package.json index 761d27d4..ec0ccdef 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ }, "icon": "media/bazel-logo.png", "engines": { - "vscode": "^1.85.0" + "vscode": "^1.88.0" }, "categories": [ "Programming Languages" @@ -418,8 +418,9 @@ "type": "string", "enum": [ "build", - "test", "run", + "test", + "coverage", "clean" ] }, @@ -460,6 +461,8 @@ "scripts": { "check-lint": "eslint .", "compile": "./scripts/build.sh", + "pretest": "./scripts/build.sh", + "test": "vscode-test", "format-check": "prettier --check .", "format-fix": "prettier --write .", "test": "./scripts/test.sh", @@ -469,14 +472,18 @@ "watch": "./scripts/build.sh -watch" }, "devDependencies": { + "@types/mocha": "^10.0.6", "@types/node": "^16.11.7", - "@types/vscode": "^1.85.0", + "@types/vscode": "^1.88.0", "@types/which": "^3.0.3", + "@vscode/test-cli": "^0.0.9", + "@vscode/test-electron": "^2.3.9", "@vscode/vsce": "^2.24.0", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-jsdoc": "^48.2.2", "js-yaml": "^4.1.0", + "mocha": "^10.4.0", "prettier": "^3.2.5", "typescript": "^5.4.4", "typescript-eslint": "^7.5.0", diff --git a/src/bazel/tasks.ts b/src/bazel/tasks.ts index aeca2347..b64bbed9 100644 --- a/src/bazel/tasks.ts +++ b/src/bazel/tasks.ts @@ -17,6 +17,8 @@ import { getDefaultBazelExecutablePath } from "../extension/configuration"; import { IBazelCommandOptions } from "./bazel_command"; import { BazelWorkspaceInfo } from "./bazel_workspace_info"; import { exitCodeToUserString, parseExitCode } from "./bazel_exit_code"; +import { BazelInfo } from "./bazel_info"; +import { showLcovCoverage } from "../test-explorer"; export const TASK_TYPE = "bazel"; @@ -34,7 +36,7 @@ export class BazelTaskInfo { */ export interface BazelTaskDefinition extends vscode.TaskDefinition { /** The Bazel command */ - command: "build" | "clean" | "test" | "run"; + command: "build" | "clean" | "coverage" | "test" | "run"; /** The list of Bazel targets */ targets: string[]; /** Additional command line arguments */ @@ -67,15 +69,7 @@ class BazelTaskProvider implements vscode.TaskProvider { // a ShellExecution for it. // Infer `BazelWorkspaceInfo` from `scope` - let workspaceInfo: BazelWorkspaceInfo; - if ( - task.scope === vscode.TaskScope.Global || - task.scope === vscode.TaskScope.Workspace - ) { - workspaceInfo = await BazelWorkspaceInfo.fromWorkspaceFolders(); - } else if (task.scope) { - workspaceInfo = BazelWorkspaceInfo.fromWorkspaceFolder(task.scope); - } + const workspaceInfo = await getWorkspaceInfoFromTask(task.scope); if (!workspaceInfo) { // eslint-disable-next-line @typescript-eslint/no-floating-promises vscode.window.showInformationMessage( @@ -91,6 +85,21 @@ class BazelTaskProvider implements vscode.TaskProvider { } } +async function getWorkspaceInfoFromTask( + scope: vscode.WorkspaceFolder | vscode.TaskScope, +) { + let workspaceInfo: BazelWorkspaceInfo; + if ( + scope === vscode.TaskScope.Global || + scope === vscode.TaskScope.Workspace + ) { + workspaceInfo = await BazelWorkspaceInfo.fromWorkspaceFolders(); + } else if (scope) { + workspaceInfo = BazelWorkspaceInfo.fromWorkspaceFolder(scope); + } + return workspaceInfo; +} + /** * Keep track of running Bazel tasks */ @@ -116,20 +125,19 @@ function measurePerformance(start: [number, number]) { /** * Display a notification whenever a Bazel task finished */ -function onTaskProcessEnd(event: vscode.TaskProcessEndEvent) { +async function onTaskProcessEnd(event: vscode.TaskProcessEndEvent) { const task = event.execution.task; if (task.definition.type !== TASK_TYPE) { return; } const taskDefinition = task.definition as BazelTaskDefinition; const command = taskDefinition.command; + const rawExitCode = event.exitCode; + const exitCode = parseExitCode(rawExitCode, command); const bazelTaskInfo = taskDefinition.bazelTaskInfo; // Show a notification that the build is finished if (bazelTaskInfo) { - const rawExitCode = event.exitCode; - - const exitCode = parseExitCode(rawExitCode, command); if (rawExitCode !== 0) { // eslint-disable-next-line @typescript-eslint/no-floating-promises vscode.window.showErrorMessage( @@ -143,6 +151,52 @@ function onTaskProcessEnd(event: vscode.TaskProcessEndEvent) { ); } } + + // For coverage runs: Display the coverage results + if (taskDefinition.command === "coverage" && rawExitCode === 0) { + // Find the coverage file and load it. + const workspaceInfo = await getWorkspaceInfoFromTask(task.scope); + const outputPath = await new BazelInfo( + getDefaultBazelExecutablePath(), + workspaceInfo.bazelWorkspacePath, + ).getOne("output_path"); + + // Build a description string which will be displayed as part of the test run. + const execution = task.execution as vscode.ShellExecution; + const bazelCommandStr = JSON.stringify( + [execution.command] + .concat(execution.args) + .map((a) => (typeof a === "string" ? a : a.value)), + ); + const description = `Coverage info from:\n ${bazelCommandStr}\n`; + + const covFilePath = outputPath + "/_coverage/_coverage_report.dat"; + const covFileUri = vscode.Uri.file(covFilePath); + try { + const covFileBytes = await vscode.workspace.fs.readFile(covFileUri); + const covFileStr = new TextDecoder("utf8").decode(covFileBytes); + if (covFileStr.trim() === "") { + // eslint-disable-next-line @typescript-eslint/no-floating-promises + vscode.window.showWarningMessage( + "The generated LCOV coverage file was empty.\n" + + "Please ensure your toolchain is correctly setup and " + + "the instrumentation filters are set correctly.", + ); + } else { + // Show the coverage date + showLcovCoverage( + description, + workspaceInfo.bazelWorkspacePath, + covFileStr, + ); + } + } catch (e: any) { + // eslint-disable-next-line @typescript-eslint/no-floating-promises + vscode.window.showErrorMessage( + `Unable to open coverage report from ${covFilePath}:\n${e}`, + ); + } + } } /** @@ -172,18 +226,13 @@ export function createBazelTaskFromDefinition( const bazelConfigCmdLine = vscode.workspace.getConfiguration("bazel.commandLine"); const startupOptions = bazelConfigCmdLine.get("startupOptions"); - const addCommandArgs = command === "build" || command === "test"; + const addCommandArgs = + command === "build" || command === "test" || command === "coverage"; const commandArgs = addCommandArgs ? bazelConfigCmdLine.get("commandArgs") : []; - const args = startupOptions - .concat([command as string]) - .concat(commandArgs) - .concat(taskDefinition.targets) - .concat(taskDefinition.options ?? []) - .map(quotedOption); - + const implicitArgs = [] as string[]; let commandDescription: string; let group: vscode.TaskGroup | undefined; switch (command) { @@ -195,6 +244,15 @@ export function createBazelTaskFromDefinition( commandDescription = "Clean"; group = vscode.TaskGroup.Clean; break; + case "coverage": + commandDescription = "Coverage"; + group = vscode.TaskGroup.Test; + // Coverage for cached tests doesn't work as expected :/ + // Disable caching. + implicitArgs.push("--nocache_test_results"); + // We only support lcov formats, so request this format + implicitArgs.push("--combined_report=lcov"); + break; case "test": commandDescription = "Test"; group = vscode.TaskGroup.Test; @@ -204,6 +262,14 @@ export function createBazelTaskFromDefinition( break; } + const args = startupOptions + .concat([command as string]) + .concat(commandArgs) + .concat(implicitArgs) + .concat(taskDefinition.options ?? []) + .concat(taskDefinition.targets) + .map(quotedOption); + const targetsDescription = taskDefinition.targets.join(", "); const task = new vscode.Task( taskDefinition, @@ -227,7 +293,7 @@ export function createBazelTaskFromDefinition( * @param options Describes the options used to launch Bazel. */ export function createBazelTask( - command: "build" | "clean" | "test" | "run", + command: "build" | "clean" | "coverage" | "test" | "run", options: IBazelCommandOptions, ): vscode.Task { const taskDefinition: BazelTaskDefinition = { diff --git a/src/extension/extension.ts b/src/extension/extension.ts index 5f4f1f09..d2bcd095 100644 --- a/src/extension/extension.ts +++ b/src/extension/extension.ts @@ -39,6 +39,7 @@ import { BazelTargetSymbolProvider } from "../symbols"; import { BazelWorkspaceTreeProvider } from "../workspace-tree"; import { getDefaultBazelExecutablePath } from "./configuration"; import { activateCommandVariables } from "./command_variables"; +import { activateTesting } from "../test-explorer"; /** * Called when the extension is activated; that is, when its first command is @@ -148,6 +149,8 @@ export async function activate(context: vscode.ExtensionContext) { ...activateTaskProvider(), // Command variables ...activateCommandVariables(), + // Test provider + ...activateTesting(), ); // Notify the user if buildifier is not available on their path (or where diff --git a/src/test-explorer/index.ts b/src/test-explorer/index.ts new file mode 100644 index 00000000..f3dfddcf --- /dev/null +++ b/src/test-explorer/index.ts @@ -0,0 +1,49 @@ +import * as vscode from "vscode"; +import { BazelFileCoverage, parseLcov } from "./lcov_parser"; + +let testController: vscode.TestController; +let coverageRunProfile: vscode.TestRunProfile; + +export function activateTesting(): vscode.Disposable[] { + const subscriptions: vscode.Disposable[] = []; + + // Create the test controller + testController = vscode.tests.createTestController( + "bazel-coverage", + "Bazel Coverage", + ); + subscriptions.push(testController); + + // Create the test run profile + coverageRunProfile = testController.createRunProfile( + "Bazel Coverage", + vscode.TestRunProfileKind.Coverage, + undefined, + ); + coverageRunProfile.isDefault = false; + // `loadDetailedCoverage` is important so that line coverage data is shown. + coverageRunProfile.loadDetailedCoverage = (_, coverage) => + Promise.resolve((coverage as BazelFileCoverage).details); + + return subscriptions; +} + +/** + * Display coverage information from a `.lcov` file. + */ +export function showLcovCoverage( + description: string, + baseFolder: string, + lcov: string, +) { + const run = testController.createTestRun( + new vscode.TestRunRequest(undefined, undefined, coverageRunProfile), + null, + false, + ); + run.appendOutput(description.replaceAll("\n", "\r\n")); + for (const c of parseLcov(baseFolder, lcov)) { + run.addCoverage(c); + } + run.end(); +} diff --git a/src/test-explorer/lcov_parser.ts b/src/test-explorer/lcov_parser.ts new file mode 100644 index 00000000..44608883 --- /dev/null +++ b/src/test-explorer/lcov_parser.ts @@ -0,0 +1,229 @@ +import * as vscode from "vscode"; +import * as path from "path"; +import { assert } from "../assert"; + +/** + * Coverage data from a Bazel run. + * + * For Bazel, we parse the detailed coverage data eagerly and store it as part + * of the FileCoverage instance. + */ +export class BazelFileCoverage extends vscode.FileCoverage { + // The coverage details + details?: vscode.FileCoverageDetail[]; + + // Construct the coverage info from the detailed coverage information + static fromDetails( + uri: vscode.Uri, + details: vscode.FileCoverageDetail[], + ): BazelFileCoverage { + const cov = vscode.FileCoverage.fromDetails( + uri, + details, + ) as BazelFileCoverage; + cov.details = details; + return cov; + } +} + +/** + * Parses the LCOV coverage info into VS Code's representation + */ +export function parseLcov( + baseFolder: string, + lcov: string, +): BazelFileCoverage[] { + lcov = lcov.replaceAll("\r\n", "\n"); + + // Documentation of the lcov format: + // * https://manpages.debian.org/unstable/lcov/geninfo.1.en.html + // * https://github.com/linux-test-project/lcov/blob/70a44f841bd99826d6f9e6df89897d2a6b9b2fe0/lib/lcovutil.pm#L6690 + // + // Following the logic from `lcovutil.pm`, functions are identified by + // filename and line. The same line number might be associated with multiple + // function names. + // + // Note that line numbers in LCOV files seem to be 1-based, while line + // numbers for VS Code need to be 0-based. + class FileCoverageInfo { + functionsByLine: Map = new Map(); + lineCoverage: Map = new Map(); + } + const infosByFile: Map = new Map(); + for (const block of lcov.split(/end_of_record(\n|$)/)) { + const functionsByName: Map = new Map(); + let info: FileCoverageInfo; + for (let line of block.split("\n")) { + line = line.trim(); + if (line === "") continue; + // Split into key and value. Note that the value might contain addtional + // `:` characters. + const lineParts = line.split(":"); + if (lineParts.length < 2) { + throw new Error(`Separator \`:\` missing`); + } + const key = lineParts.shift(); + const value = lineParts.join(":"); + switch (key) { + case "TN": // Test name + // Ignored. There is no way to expose this through the VSCode APIs + break; + case "SF": { + // File name + if (info !== undefined) { + throw new Error(`Duplicated SF entry`); + } + const filename = path.resolve(baseFolder, value); + if (!infosByFile.has(filename)) { + infosByFile.set(filename, new FileCoverageInfo()); + } + info = infosByFile.get(filename); + break; + } + case "FN": { + // Line number, , Function name + // Note that the function name could also contain a comma. + const match = value.match(/^(\d+),(?:(\d+),)?(.*)$/); + if (!match) { + throw new Error(`Invalid FN entry`); + } + if (info === undefined) { + throw new Error(`Missing filename`); + } + const startLine = Number.parseInt(match[1], 10) - 1; + if (startLine < 0) { + throw new Error("Negative start line in FN entry"); + } + const funcName = match[3]; + let location: vscode.Position | vscode.Range; + if (match[2] !== undefined) { + const endLine = Number.parseInt(match[2], 10) - 1; + if (endLine < startLine) { + throw new Error("End line < start line in FN entry"); + } + location = new vscode.Range( + new vscode.Position(startLine, 0), + new vscode.Position(endLine, 0), + ); + } else { + location = new vscode.Position(startLine, 0); + } + if (!info.functionsByLine.has(startLine)) { + // TODO: For Java, C++ and Rust the function names should be demangled. + // https://internals.rust-lang.org/t/symbol-mangling-of-rust-vs-c/7222 + // https://github.com/rust-lang/rustc-demangle + // https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.3.3 + // + // Tested with: + // * Go -> no function names, only line coverage + // * C++ -> mangled names + // * Java -> mangled names + // * Rust -> mangled names + // Not tested with Python, Swift, Kotlin etc. + info.functionsByLine.set( + startLine, + new vscode.DeclarationCoverage(funcName, 0, location), + ); + } + functionsByName.set(funcName, info.functionsByLine.get(startLine)); + break; + } + case "FNDA": { + // Function coverage: ," + // Note that the funciton name could also contain commas. + const match = value.match(/^(\d+),(.*)$/); + if (!match) { + throw new Error(`Invalid FNDA entry`); + } + const coveredCount = Number.parseInt(match[1], 10); + const funcName = match[2]; + const functionDef = functionsByName.get(funcName); + if (functionDef === undefined) { + throw new Error( + `Coverage data for undeclared function \`${funcName}\``, + ); + } + if (coveredCount < 0) { + throw new Error("Negative coverage count in FNDA entry"); + } + assert(typeof functionDef.executed == "number"); + functionDef.executed += coveredCount; + break; + } + case "FNF": // Functions found + case "FNH": // Functions hit + // Ignored. Reconstructed from FN entries + break; + case "DA": { + // line number, hit count, [checksum] + const parts = value.split(","); + if (parts.length < 2 || parts.length > 3) { + throw new Error("Invalid DA entry"); + } + const lineNumber = Number.parseInt(parts[0], 10) - 1; + if (lineNumber < 0) { + throw new Error("Negative line number in DA entry"); + } + const hitCount = Number.parseInt(parts[1], 10); + if (hitCount < 0) { + throw new Error("Negative hit count in DA entry"); + } + if (info === undefined) { + throw new Error(`Missing filename`); + } + if (!info.lineCoverage.has(lineNumber)) { + info.lineCoverage.set( + lineNumber, + new vscode.StatementCoverage( + hitCount, + new vscode.Position(lineNumber, 0), + ), + ); + } else { + const coverageEntry = info.lineCoverage.get(lineNumber); + assert(typeof coverageEntry.executed == "number"); + coverageEntry.executed += hitCount; + } + break; + } + case "LF": // Lines found + case "LH": // Lines hit + // Ignored. Reconstructed from DA entries + break; + case "BRDA": { + // branch coverage: ,[],, + const match = value.match(/(\d+),(e?)(\d+),(.+)/); + if (!match) { + throw new Error(`Invalid FNDA entry`); + } + // TODO: Add support for branch coverage + break; + } + case "BRF": // branches found + case "BRH": // branches hit + // Ignored. Reconstructed from BRDA entries + break; + default: + throw new Error(`Unknown LCOV statement: ${key}`); + } + } + } + + const fileCoverages = [] as BazelFileCoverage[]; + for (const [fileName, info] of infosByFile.entries()) { + let detailedCoverage = [] as vscode.FileCoverageDetail[]; + detailedCoverage = detailedCoverage.concat( + Array.from(info.functionsByLine.values()), + ); + detailedCoverage = detailedCoverage.concat( + Array.from(info.lineCoverage.values()), + ); + fileCoverages.push( + BazelFileCoverage.fromDetails( + vscode.Uri.file(fileName), + detailedCoverage, + ), + ); + } + return fileCoverages; +} diff --git a/test/lcov/README.md b/test/lcov/README.md new file mode 100644 index 00000000..0e66f047 --- /dev/null +++ b/test/lcov/README.md @@ -0,0 +1,10 @@ +Those files were generated using + +`bazel coverage --nocache_test_results --combined_report=lcov --instrument_test_targets $target` + +for the following targets + +java.lcov: `//examples/java-native/src/test/java/com/example/myproject:hello` from https://github.com/bazelbuild/bazel +cpp.lcov: `//src/test/cpp:rc_file_test` from https://github.com/bazelbuild/bazel +rust.lcov: `//util/label:label_test` from https://github.com/bazelbuild/rules_rust +go.lcov: `//config:go_default_test` from https://github.com/buchgr/bazel-remote diff --git a/test/lcov/cpp.lcov b/test/lcov/cpp.lcov new file mode 100644 index 00000000..f58e7b9f --- /dev/null +++ b/test/lcov/cpp.lcov @@ -0,0 +1,3426 @@ +SF:src/test/cpp/rc_file_test.cc +FN:71,_ZN5blaze10RcFileTest5SetUpEv +FN:100,_ZN5blaze10RcFileTest8TearDownEv +FN:61,_ZN5blaze10RcFileTestC2Ev +FN:361,_ZN5blaze16ParseOptionsTest26ParseOptionsAndCheckOutputERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEN15blaze_exit_code8ExitCodeERKS7_SF_ +FN:671,_ZN5blaze17BlazercImportTest34TestThatDoubleImportsCauseAWarningERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE +FN:732,_ZN5blaze17BlazercImportTest38TestThatDeepDoubleImportCausesAWarningERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE +FN:629,_ZN5blaze17BlazercImportTest39TestBazelRcImportsMaintainsFlagOrderingERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE +FN:763,_ZN5blaze17BlazercImportTest50TestThatImportingAFileAndPassingItInCausesAWarningERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE +FN:711,_ZN5blaze17BlazercImportTest53TestThatDoubleImportWithExcessPathSyntaxCauseAWarningERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE +FN:690,_ZN5blaze17BlazercImportTest60TestThatDoubleImportWithWorkspaceRelativeSyntaxCauseAWarningERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE +FN:54,_ZN5blaze23CanonicalSourcePathsAreINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_31CanonicalSourcePathsAreMatcherPIT_EES8_ +FN:54,_ZN5blaze23CanonicalSourcePathsAreIPKcEENS_31CanonicalSourcePathsAreMatcherPIT_EES4_ +FN:54,_ZN5blaze31CanonicalSourcePathsAreMatcherPINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE10gmock_ImplIRKNS_6RcFileEEC2ES6_ +FN:54,_ZN5blaze31CanonicalSourcePathsAreMatcherPIPKcE10gmock_ImplIRKNS_6RcFileEEC2ES2_ +FN:498,_ZN5blaze45ParseOptionsTest_BazelrcHasUnknownOption_Test8TestBodyEv +FN:498,_ZN5blaze45ParseOptionsTest_BazelrcHasUnknownOption_TestC2Ev +FN:498,_ZN5blaze45ParseOptionsTest_BazelrcHasUnknownOption_TestD0Ev +FN:498,_ZN5blaze45ParseOptionsTest_BazelrcHasUnknownOption_TestD2Ev +FN:314,_ZN5blaze47GetRcFileTest_GetRcFilesReadsCommandLineRc_Test8TestBodyEv +FN:314,_ZN5blaze47GetRcFileTest_GetRcFilesReadsCommandLineRc_TestC2Ev +FN:314,_ZN5blaze47GetRcFileTest_GetRcFilesReadsCommandLineRc_TestD0Ev +FN:314,_ZN5blaze47GetRcFileTest_GetRcFilesReadsCommandLineRc_TestD2Ev +FN:218,_ZN5blaze47GetRcFileTest_GetRcFilesRespectsNoSystemRc_Test8TestBodyEv +FN:218,_ZN5blaze47GetRcFileTest_GetRcFilesRespectsNoSystemRc_TestC2Ev +FN:218,_ZN5blaze47GetRcFileTest_GetRcFilesRespectsNoSystemRc_TestD0Ev +FN:218,_ZN5blaze47GetRcFileTest_GetRcFilesRespectsNoSystemRc_TestD2Ev +FN:849,_ZN5blaze49BlazercImportTest_DoubleImportsCauseAWarning_Test8TestBodyEv +FN:849,_ZN5blaze49BlazercImportTest_DoubleImportsCauseAWarning_TestC2Ev +FN:849,_ZN5blaze49BlazercImportTest_DoubleImportsCauseAWarning_TestD0Ev +FN:849,_ZN5blaze49BlazercImportTest_DoubleImportsCauseAWarning_TestD2Ev +FN:241,_ZN5blaze50GetRcFileTest_GetRcFilesRespectsNoWorkspaceRc_Test8TestBodyEv +FN:241,_ZN5blaze50GetRcFileTest_GetRcFilesRespectsNoWorkspaceRc_TestC2Ev +FN:241,_ZN5blaze50GetRcFileTest_GetRcFilesRespectsNoWorkspaceRc_TestD0Ev +FN:241,_ZN5blaze50GetRcFileTest_GetRcFilesRespectsNoWorkspaceRc_TestD2Ev +FN:853,_ZN5blaze52BlazercImportTest_DoubleTryImportsCauseAWarning_Test8TestBodyEv +FN:853,_ZN5blaze52BlazercImportTest_DoubleTryImportsCauseAWarning_TestC2Ev +FN:853,_ZN5blaze52BlazercImportTest_DoubleTryImportsCauseAWarning_TestD0Ev +FN:853,_ZN5blaze52BlazercImportTest_DoubleTryImportsCauseAWarning_TestD2Ev +FN:193,_ZN5blaze52GetRcFileTest_GetRcFilesLoadsAllDefaultBazelrcs_Test8TestBodyEv +FN:193,_ZN5blaze52GetRcFileTest_GetRcFilesLoadsAllDefaultBazelrcs_TestC2Ev +FN:193,_ZN5blaze52GetRcFileTest_GetRcFilesLoadsAllDefaultBazelrcs_TestD0Ev +FN:193,_ZN5blaze52GetRcFileTest_GetRcFilesLoadsAllDefaultBazelrcs_TestD2Ev +FN:408,_ZN5blaze52ParseOptionsTest_LaterIgnoreAllRcFilesValueWins_Test8TestBodyEv +FN:408,_ZN5blaze52ParseOptionsTest_LaterIgnoreAllRcFilesValueWins_TestC2Ev +FN:408,_ZN5blaze52ParseOptionsTest_LaterIgnoreAllRcFilesValueWins_TestD0Ev +FN:408,_ZN5blaze52ParseOptionsTest_LaterIgnoreAllRcFilesValueWins_TestD2Ev +FN:901,_ZN5blaze53BlazercImportTest_DeepDoubleImportCausesAWarning_Test8TestBodyEv +FN:901,_ZN5blaze53BlazercImportTest_DeepDoubleImportCausesAWarning_TestC2Ev +FN:901,_ZN5blaze53BlazercImportTest_DeepDoubleImportCausesAWarning_TestD0Ev +FN:901,_ZN5blaze53BlazercImportTest_DeepDoubleImportCausesAWarning_TestD2Ev +FN:340,_ZN5blaze53GetRcFileTest_GetRcFilesAcceptsNullCommandLineRc_Test8TestBodyEv +FN:340,_ZN5blaze53GetRcFileTest_GetRcFilesAcceptsNullCommandLineRc_TestC2Ev +FN:340,_ZN5blaze53GetRcFileTest_GetRcFilesAcceptsNullCommandLineRc_TestD0Ev +FN:340,_ZN5blaze53GetRcFileTest_GetRcFilesAcceptsNullCommandLineRc_TestD2Ev +FN:787,_ZN5blaze55BlazercImportTest_BazelRcImportFailsForMissingFile_Test8TestBodyEv +FN:787,_ZN5blaze55BlazercImportTest_BazelRcImportFailsForMissingFile_TestC2Ev +FN:787,_ZN5blaze55BlazercImportTest_BazelRcImportFailsForMissingFile_TestD0Ev +FN:787,_ZN5blaze55BlazercImportTest_BazelRcImportFailsForMissingFile_TestD2Ev +FN:905,_ZN5blaze56BlazercImportTest_DeepDoubleTryImportCausesAWarning_Test8TestBodyEv +FN:905,_ZN5blaze56BlazercImportTest_DeepDoubleTryImportCausesAWarning_TestC2Ev +FN:905,_ZN5blaze56BlazercImportTest_DeepDoubleTryImportCausesAWarning_TestD0Ev +FN:905,_ZN5blaze56BlazercImportTest_DeepDoubleTryImportCausesAWarning_TestD2Ev +FN:467,_ZN5blaze56ParseOptionsTest_CommandLineBazelrcHasUnknownOption_Test8TestBodyEv +FN:467,_ZN5blaze56ParseOptionsTest_CommandLineBazelrcHasUnknownOption_TestC2Ev +FN:467,_ZN5blaze56ParseOptionsTest_CommandLineBazelrcHasUnknownOption_TestD0Ev +FN:467,_ZN5blaze56ParseOptionsTest_CommandLineBazelrcHasUnknownOption_TestD2Ev +FN:841,_ZN5blaze58BlazercImportTest_BazelRcImportsMaintainsFlagOrdering_Test8TestBodyEv +FN:841,_ZN5blaze58BlazercImportTest_BazelRcImportsMaintainsFlagOrdering_TestC2Ev +FN:841,_ZN5blaze58BlazercImportTest_BazelRcImportsMaintainsFlagOrdering_TestD0Ev +FN:841,_ZN5blaze58BlazercImportTest_BazelRcImportsMaintainsFlagOrdering_TestD2Ev +FN:287,_ZN5blaze59GetRcFileTest_GetRcFilesWarnsAboutIgnoredMasterRcFiles_Test8TestBodyEv +FN:287,_ZN5blaze59GetRcFileTest_GetRcFilesWarnsAboutIgnoredMasterRcFiles_TestC2Ev +FN:287,_ZN5blaze59GetRcFileTest_GetRcFilesWarnsAboutIgnoredMasterRcFiles_TestD0Ev +FN:287,_ZN5blaze59GetRcFileTest_GetRcFilesWarnsAboutIgnoredMasterRcFiles_TestD2Ev +FN:546,_ZN5blaze59ParseOptionsTest_PositiveOptionOverridesNegativeOption_Test8TestBodyEv +FN:546,_ZN5blaze59ParseOptionsTest_PositiveOptionOverridesNegativeOption_TestC2Ev +FN:546,_ZN5blaze59ParseOptionsTest_PositiveOptionOverridesNegativeOption_TestD0Ev +FN:546,_ZN5blaze59ParseOptionsTest_PositiveOptionOverridesNegativeOption_TestD2Ev +FN:845,_ZN5blaze61BlazercImportTest_BazelRcTryImportsMaintainsFlagOrdering_Test8TestBodyEv +FN:845,_ZN5blaze61BlazercImportTest_BazelRcTryImportsMaintainsFlagOrdering_TestC2Ev +FN:845,_ZN5blaze61BlazercImportTest_BazelRcTryImportsMaintainsFlagOrdering_TestD0Ev +FN:845,_ZN5blaze61BlazercImportTest_BazelRcTryImportsMaintainsFlagOrdering_TestD2Ev +FN:800,_ZN5blaze64BlazercImportTest_BazelRcTryImportDoesNotFailForMissingFile_Test8TestBodyEv +FN:800,_ZN5blaze64BlazercImportTest_BazelRcTryImportDoesNotFailForMissingFile_TestC2Ev +FN:800,_ZN5blaze64BlazercImportTest_BazelRcTryImportDoesNotFailForMissingFile_TestD0Ev +FN:800,_ZN5blaze64BlazercImportTest_BazelRcTryImportDoesNotFailForMissingFile_TestD2Ev +FN:909,_ZN5blaze65BlazercImportTest_ImportingAFileAndPassingItInCausesAWarning_Test8TestBodyEv +FN:909,_ZN5blaze65BlazercImportTest_ImportingAFileAndPassingItInCausesAWarning_TestC2Ev +FN:909,_ZN5blaze65BlazercImportTest_ImportingAFileAndPassingItInCausesAWarning_TestD0Ev +FN:909,_ZN5blaze65BlazercImportTest_ImportingAFileAndPassingItInCausesAWarning_TestD2Ev +FN:434,_ZN5blaze65ParseOptionsTest_IgnoreAllRcFilesIgnoresCommandLineRcFileToo_Test8TestBodyEv +FN:434,_ZN5blaze65ParseOptionsTest_IgnoreAllRcFilesIgnoresCommandLineRcFileToo_TestC2Ev +FN:434,_ZN5blaze65ParseOptionsTest_IgnoreAllRcFilesIgnoresCommandLineRcFileToo_TestD0Ev +FN:434,_ZN5blaze65ParseOptionsTest_IgnoreAllRcFilesIgnoresCommandLineRcFileToo_TestD2Ev +FN:816,_ZN5blaze67BlazercImportTest_BazelRcTryImportDoesNotFailForUnreadableFile_Test8TestBodyEv +FN:816,_ZN5blaze67BlazercImportTest_BazelRcTryImportDoesNotFailForUnreadableFile_TestC2Ev +FN:816,_ZN5blaze67BlazercImportTest_BazelRcTryImportDoesNotFailForUnreadableFile_TestD0Ev +FN:816,_ZN5blaze67BlazercImportTest_BazelRcTryImportDoesNotFailForUnreadableFile_TestD2Ev +FN:867,_ZN5blaze68BlazercImportTest_DoubleImportWithExcessPathSyntaxCauseAWarning_Test8TestBodyEv +FN:867,_ZN5blaze68BlazercImportTest_DoubleImportWithExcessPathSyntaxCauseAWarning_TestC2Ev +FN:867,_ZN5blaze68BlazercImportTest_DoubleImportWithExcessPathSyntaxCauseAWarning_TestD0Ev +FN:867,_ZN5blaze68BlazercImportTest_DoubleImportWithExcessPathSyntaxCauseAWarning_TestD2Ev +FN:913,_ZN5blaze68BlazercImportTest_TryImportingAFileAndPassingItInCausesAWarning_Test8TestBodyEv +FN:913,_ZN5blaze68BlazercImportTest_TryImportingAFileAndPassingItInCausesAWarning_TestC2Ev +FN:913,_ZN5blaze68BlazercImportTest_TryImportingAFileAndPassingItInCausesAWarning_TestD0Ev +FN:913,_ZN5blaze68BlazercImportTest_TryImportingAFileAndPassingItInCausesAWarning_TestD2Ev +FN:378,_ZN5blaze68ParseOptionsTest_IgnoreAllRcFilesIgnoresAllMasterAndUserRcFiles_Test8TestBodyEv +FN:378,_ZN5blaze68ParseOptionsTest_IgnoreAllRcFilesIgnoresAllMasterAndUserRcFiles_TestC2Ev +FN:378,_ZN5blaze68ParseOptionsTest_IgnoreAllRcFilesIgnoresAllMasterAndUserRcFiles_TestD0Ev +FN:378,_ZN5blaze68ParseOptionsTest_IgnoreAllRcFilesIgnoresAllMasterAndUserRcFiles_TestD2Ev +FN:592,_ZN5blaze69ParseOptionsTest_CommandLineBazelrcHasPriorityOverDefaultBazelrc_Test8TestBodyEv +FN:592,_ZN5blaze69ParseOptionsTest_CommandLineBazelrcHasPriorityOverDefaultBazelrc_TestC2Ev +FN:592,_ZN5blaze69ParseOptionsTest_CommandLineBazelrcHasPriorityOverDefaultBazelrc_TestD0Ev +FN:592,_ZN5blaze69ParseOptionsTest_CommandLineBazelrcHasPriorityOverDefaultBazelrc_TestD2Ev +FN:568,_ZN5blaze70ParseOptionsTest_MultipleStartupArgsInMasterBazelrcWorksCorrectly_Test8TestBodyEv +FN:568,_ZN5blaze70ParseOptionsTest_MultipleStartupArgsInMasterBazelrcWorksCorrectly_TestC2Ev +FN:568,_ZN5blaze70ParseOptionsTest_MultipleStartupArgsInMasterBazelrcWorksCorrectly_TestD0Ev +FN:568,_ZN5blaze70ParseOptionsTest_MultipleStartupArgsInMasterBazelrcWorksCorrectly_TestD2Ev +FN:871,_ZN5blaze71BlazercImportTest_DoubleTryImportWithExcessPathSyntaxCauseAWarning_Test8TestBodyEv +FN:871,_ZN5blaze71BlazercImportTest_DoubleTryImportWithExcessPathSyntaxCauseAWarning_TestC2Ev +FN:871,_ZN5blaze71BlazercImportTest_DoubleTryImportWithExcessPathSyntaxCauseAWarning_TestD0Ev +FN:871,_ZN5blaze71BlazercImportTest_DoubleTryImportWithExcessPathSyntaxCauseAWarning_TestD2Ev +FN:936,_ZN5blaze71ParseOptionsTest_ImportingStandardRcBeforeItIsLoadedCausesAWarning_Test8TestBodyEv +FN:936,_ZN5blaze71ParseOptionsTest_ImportingStandardRcBeforeItIsLoadedCausesAWarning_TestC2Ev +FN:936,_ZN5blaze71ParseOptionsTest_ImportingStandardRcBeforeItIsLoadedCausesAWarning_TestD0Ev +FN:936,_ZN5blaze71ParseOptionsTest_ImportingStandardRcBeforeItIsLoadedCausesAWarning_TestD2Ev +FN:921,_ZN5blaze72ParseOptionsTest_ImportingAPreviouslyLoadedStandardRcCausesAWarning_Test8TestBodyEv +FN:921,_ZN5blaze72ParseOptionsTest_ImportingAPreviouslyLoadedStandardRcCausesAWarning_TestC2Ev +FN:921,_ZN5blaze72ParseOptionsTest_ImportingAPreviouslyLoadedStandardRcCausesAWarning_TestD0Ev +FN:921,_ZN5blaze72ParseOptionsTest_ImportingAPreviouslyLoadedStandardRcCausesAWarning_TestD2Ev +FN:857,_ZN5blaze75BlazercImportTest_DoubleImportWithWorkspaceRelativeSyntaxCauseAWarning_Test8TestBodyEv +FN:857,_ZN5blaze75BlazercImportTest_DoubleImportWithWorkspaceRelativeSyntaxCauseAWarning_TestC2Ev +FN:857,_ZN5blaze75BlazercImportTest_DoubleImportWithWorkspaceRelativeSyntaxCauseAWarning_TestD0Ev +FN:857,_ZN5blaze75BlazercImportTest_DoubleImportWithWorkspaceRelativeSyntaxCauseAWarning_TestD2Ev +FN:877,_ZN5blaze76BlazercImportTest_DoubleImportWithEnclosingDirectorySyntaxCauseAWarning_Test8TestBodyEv +FN:877,_ZN5blaze76BlazercImportTest_DoubleImportWithEnclosingDirectorySyntaxCauseAWarning_TestC2Ev +FN:877,_ZN5blaze76BlazercImportTest_DoubleImportWithEnclosingDirectorySyntaxCauseAWarning_TestD0Ev +FN:877,_ZN5blaze76BlazercImportTest_DoubleImportWithEnclosingDirectorySyntaxCauseAWarning_TestD2Ev +FN:862,_ZN5blaze78BlazercImportTest_DoubleTryImportWithWorkspaceRelativeSyntaxCauseAWarning_Test8TestBodyEv +FN:862,_ZN5blaze78BlazercImportTest_DoubleTryImportWithWorkspaceRelativeSyntaxCauseAWarning_TestC2Ev +FN:862,_ZN5blaze78BlazercImportTest_DoubleTryImportWithWorkspaceRelativeSyntaxCauseAWarning_TestD0Ev +FN:862,_ZN5blaze78BlazercImportTest_DoubleTryImportWithWorkspaceRelativeSyntaxCauseAWarning_TestD2Ev +FN:264,_ZN5blaze80GetRcFileTest_GetRcFilesRespectsNoWorkspaceRcAndNoSystemAndNoHomeRcCombined_Test8TestBodyEv +FN:264,_ZN5blaze80GetRcFileTest_GetRcFilesRespectsNoWorkspaceRcAndNoSystemAndNoHomeRcCombined_TestC2Ev +FN:264,_ZN5blaze80GetRcFileTest_GetRcFilesRespectsNoWorkspaceRcAndNoSystemAndNoHomeRcCombined_TestD0Ev +FN:264,_ZN5blaze80GetRcFileTest_GetRcFilesRespectsNoWorkspaceRcAndNoSystemAndNoHomeRcCombined_TestD2Ev +FN:523,_ZN5blaze80ParseOptionsTest_IncorrectWorkspaceBazelrcIgnoredWhenNoWorkspaceRcIsPresent_Test8TestBodyEv +FN:523,_ZN5blaze80ParseOptionsTest_IncorrectWorkspaceBazelrcIgnoredWhenNoWorkspaceRcIsPresent_TestC2Ev +FN:523,_ZN5blaze80ParseOptionsTest_IncorrectWorkspaceBazelrcIgnoredWhenNoWorkspaceRcIsPresent_TestD0Ev +FN:523,_ZN5blaze80ParseOptionsTest_IncorrectWorkspaceBazelrcIgnoredWhenNoWorkspaceRcIsPresent_TestD2Ev +FN:147,_ZNK5blaze10RcFileTest15SetUpHomeRcFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS6_ +FN:124,_ZNK5blaze10RcFileTest17SetUpSystemRcFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS6_ +FN:136,_ZNK5blaze10RcFileTest20SetUpWorkspaceRcFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS6_ +FN:157,_ZNK5blaze10RcFileTest34SetUpLegacyMasterRcFileInWorkspaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS6_ +FN:170,_ZNK5blaze10RcFileTest38SetUpLegacyMasterRcFileAlongsideBinaryERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS6_ +FN:54,_ZNK5blaze31CanonicalSourcePathsAreMatcherPINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE10gmock_ImplIRKNS_6RcFileEE10DescribeToEPSo +FN:54,_ZNK5blaze31CanonicalSourcePathsAreMatcherPINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE10gmock_ImplIRKNS_6RcFileEE15MatchAndExplainESB_PN7testing19MatchResultListenerE +FN:54,_ZNK5blaze31CanonicalSourcePathsAreMatcherPINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE10gmock_ImplIRKNS_6RcFileEE17FormatDescriptionEb +FN:54,_ZNK5blaze31CanonicalSourcePathsAreMatcherPINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE10gmock_ImplIRKNS_6RcFileEE18DescribeNegationToEPSo +FN:54,_ZNK5blaze31CanonicalSourcePathsAreMatcherPIPKcE10gmock_ImplIRKNS_6RcFileEE10DescribeToEPSo +FN:54,_ZNK5blaze31CanonicalSourcePathsAreMatcherPIPKcE10gmock_ImplIRKNS_6RcFileEE15MatchAndExplainES7_PN7testing19MatchResultListenerE +FN:54,_ZNK5blaze31CanonicalSourcePathsAreMatcherPIPKcE10gmock_ImplIRKNS_6RcFileEE17FormatDescriptionB5cxx11Eb +FN:54,_ZNK5blaze31CanonicalSourcePathsAreMatcherPIPKcE10gmock_ImplIRKNS_6RcFileEE18DescribeNegationToEPSo +FNDA:34,_ZN5blaze10RcFileTest5SetUpEv +FNDA:34,_ZN5blaze10RcFileTest8TearDownEv +FNDA:34,_ZN5blaze10RcFileTestC2Ev +FNDA:21,_ZN5blaze16ParseOptionsTest26ParseOptionsAndCheckOutputERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEN15blaze_exit_code8ExitCodeERKS7_SF_ +FNDA:2,_ZN5blaze17BlazercImportTest34TestThatDoubleImportsCauseAWarningERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE +FNDA:2,_ZN5blaze17BlazercImportTest38TestThatDeepDoubleImportCausesAWarningERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE +FNDA:2,_ZN5blaze17BlazercImportTest39TestBazelRcImportsMaintainsFlagOrderingERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE +FNDA:2,_ZN5blaze17BlazercImportTest50TestThatImportingAFileAndPassingItInCausesAWarningERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE +FNDA:2,_ZN5blaze17BlazercImportTest53TestThatDoubleImportWithExcessPathSyntaxCauseAWarningERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE +FNDA:2,_ZN5blaze17BlazercImportTest60TestThatDoubleImportWithWorkspaceRelativeSyntaxCauseAWarningERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE +FNDA:7,_ZN5blaze23CanonicalSourcePathsAreINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_31CanonicalSourcePathsAreMatcherPIT_EES8_ +FNDA:1,_ZN5blaze23CanonicalSourcePathsAreIPKcEENS_31CanonicalSourcePathsAreMatcherPIT_EES4_ +FNDA:7,_ZN5blaze31CanonicalSourcePathsAreMatcherPINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE10gmock_ImplIRKNS_6RcFileEEC2ES6_ +FNDA:1,_ZN5blaze31CanonicalSourcePathsAreMatcherPIPKcE10gmock_ImplIRKNS_6RcFileEEC2ES2_ +FNDA:1,_ZN5blaze45ParseOptionsTest_BazelrcHasUnknownOption_Test8TestBodyEv +FNDA:1,_ZN5blaze45ParseOptionsTest_BazelrcHasUnknownOption_TestC2Ev +FNDA:1,_ZN5blaze45ParseOptionsTest_BazelrcHasUnknownOption_TestD0Ev +FNDA:1,_ZN5blaze45ParseOptionsTest_BazelrcHasUnknownOption_TestD2Ev +FNDA:1,_ZN5blaze47GetRcFileTest_GetRcFilesReadsCommandLineRc_Test8TestBodyEv +FNDA:1,_ZN5blaze47GetRcFileTest_GetRcFilesReadsCommandLineRc_TestC2Ev +FNDA:1,_ZN5blaze47GetRcFileTest_GetRcFilesReadsCommandLineRc_TestD0Ev +FNDA:1,_ZN5blaze47GetRcFileTest_GetRcFilesReadsCommandLineRc_TestD2Ev +FNDA:1,_ZN5blaze47GetRcFileTest_GetRcFilesRespectsNoSystemRc_Test8TestBodyEv +FNDA:1,_ZN5blaze47GetRcFileTest_GetRcFilesRespectsNoSystemRc_TestC2Ev +FNDA:1,_ZN5blaze47GetRcFileTest_GetRcFilesRespectsNoSystemRc_TestD0Ev +FNDA:1,_ZN5blaze47GetRcFileTest_GetRcFilesRespectsNoSystemRc_TestD2Ev +FNDA:1,_ZN5blaze49BlazercImportTest_DoubleImportsCauseAWarning_Test8TestBodyEv +FNDA:1,_ZN5blaze49BlazercImportTest_DoubleImportsCauseAWarning_TestC2Ev +FNDA:1,_ZN5blaze49BlazercImportTest_DoubleImportsCauseAWarning_TestD0Ev +FNDA:1,_ZN5blaze49BlazercImportTest_DoubleImportsCauseAWarning_TestD2Ev +FNDA:1,_ZN5blaze50GetRcFileTest_GetRcFilesRespectsNoWorkspaceRc_Test8TestBodyEv +FNDA:1,_ZN5blaze50GetRcFileTest_GetRcFilesRespectsNoWorkspaceRc_TestC2Ev +FNDA:1,_ZN5blaze50GetRcFileTest_GetRcFilesRespectsNoWorkspaceRc_TestD0Ev +FNDA:1,_ZN5blaze50GetRcFileTest_GetRcFilesRespectsNoWorkspaceRc_TestD2Ev +FNDA:1,_ZN5blaze52BlazercImportTest_DoubleTryImportsCauseAWarning_Test8TestBodyEv +FNDA:1,_ZN5blaze52BlazercImportTest_DoubleTryImportsCauseAWarning_TestC2Ev +FNDA:1,_ZN5blaze52BlazercImportTest_DoubleTryImportsCauseAWarning_TestD0Ev +FNDA:1,_ZN5blaze52BlazercImportTest_DoubleTryImportsCauseAWarning_TestD2Ev +FNDA:1,_ZN5blaze52GetRcFileTest_GetRcFilesLoadsAllDefaultBazelrcs_Test8TestBodyEv +FNDA:1,_ZN5blaze52GetRcFileTest_GetRcFilesLoadsAllDefaultBazelrcs_TestC2Ev +FNDA:1,_ZN5blaze52GetRcFileTest_GetRcFilesLoadsAllDefaultBazelrcs_TestD0Ev +FNDA:1,_ZN5blaze52GetRcFileTest_GetRcFilesLoadsAllDefaultBazelrcs_TestD2Ev +FNDA:1,_ZN5blaze52ParseOptionsTest_LaterIgnoreAllRcFilesValueWins_Test8TestBodyEv +FNDA:1,_ZN5blaze52ParseOptionsTest_LaterIgnoreAllRcFilesValueWins_TestC2Ev +FNDA:1,_ZN5blaze52ParseOptionsTest_LaterIgnoreAllRcFilesValueWins_TestD0Ev +FNDA:1,_ZN5blaze52ParseOptionsTest_LaterIgnoreAllRcFilesValueWins_TestD2Ev +FNDA:1,_ZN5blaze53BlazercImportTest_DeepDoubleImportCausesAWarning_Test8TestBodyEv +FNDA:1,_ZN5blaze53BlazercImportTest_DeepDoubleImportCausesAWarning_TestC2Ev +FNDA:1,_ZN5blaze53BlazercImportTest_DeepDoubleImportCausesAWarning_TestD0Ev +FNDA:1,_ZN5blaze53BlazercImportTest_DeepDoubleImportCausesAWarning_TestD2Ev +FNDA:1,_ZN5blaze53GetRcFileTest_GetRcFilesAcceptsNullCommandLineRc_Test8TestBodyEv +FNDA:1,_ZN5blaze53GetRcFileTest_GetRcFilesAcceptsNullCommandLineRc_TestC2Ev +FNDA:1,_ZN5blaze53GetRcFileTest_GetRcFilesAcceptsNullCommandLineRc_TestD0Ev +FNDA:1,_ZN5blaze53GetRcFileTest_GetRcFilesAcceptsNullCommandLineRc_TestD2Ev +FNDA:1,_ZN5blaze55BlazercImportTest_BazelRcImportFailsForMissingFile_Test8TestBodyEv +FNDA:1,_ZN5blaze55BlazercImportTest_BazelRcImportFailsForMissingFile_TestC2Ev +FNDA:1,_ZN5blaze55BlazercImportTest_BazelRcImportFailsForMissingFile_TestD0Ev +FNDA:1,_ZN5blaze55BlazercImportTest_BazelRcImportFailsForMissingFile_TestD2Ev +FNDA:1,_ZN5blaze56BlazercImportTest_DeepDoubleTryImportCausesAWarning_Test8TestBodyEv +FNDA:1,_ZN5blaze56BlazercImportTest_DeepDoubleTryImportCausesAWarning_TestC2Ev +FNDA:1,_ZN5blaze56BlazercImportTest_DeepDoubleTryImportCausesAWarning_TestD0Ev +FNDA:1,_ZN5blaze56BlazercImportTest_DeepDoubleTryImportCausesAWarning_TestD2Ev +FNDA:1,_ZN5blaze56ParseOptionsTest_CommandLineBazelrcHasUnknownOption_Test8TestBodyEv +FNDA:1,_ZN5blaze56ParseOptionsTest_CommandLineBazelrcHasUnknownOption_TestC2Ev +FNDA:1,_ZN5blaze56ParseOptionsTest_CommandLineBazelrcHasUnknownOption_TestD0Ev +FNDA:1,_ZN5blaze56ParseOptionsTest_CommandLineBazelrcHasUnknownOption_TestD2Ev +FNDA:1,_ZN5blaze58BlazercImportTest_BazelRcImportsMaintainsFlagOrdering_Test8TestBodyEv +FNDA:1,_ZN5blaze58BlazercImportTest_BazelRcImportsMaintainsFlagOrdering_TestC2Ev +FNDA:1,_ZN5blaze58BlazercImportTest_BazelRcImportsMaintainsFlagOrdering_TestD0Ev +FNDA:1,_ZN5blaze58BlazercImportTest_BazelRcImportsMaintainsFlagOrdering_TestD2Ev +FNDA:1,_ZN5blaze59GetRcFileTest_GetRcFilesWarnsAboutIgnoredMasterRcFiles_Test8TestBodyEv +FNDA:1,_ZN5blaze59GetRcFileTest_GetRcFilesWarnsAboutIgnoredMasterRcFiles_TestC2Ev +FNDA:1,_ZN5blaze59GetRcFileTest_GetRcFilesWarnsAboutIgnoredMasterRcFiles_TestD0Ev +FNDA:1,_ZN5blaze59GetRcFileTest_GetRcFilesWarnsAboutIgnoredMasterRcFiles_TestD2Ev +FNDA:1,_ZN5blaze59ParseOptionsTest_PositiveOptionOverridesNegativeOption_Test8TestBodyEv +FNDA:1,_ZN5blaze59ParseOptionsTest_PositiveOptionOverridesNegativeOption_TestC2Ev +FNDA:1,_ZN5blaze59ParseOptionsTest_PositiveOptionOverridesNegativeOption_TestD0Ev +FNDA:1,_ZN5blaze59ParseOptionsTest_PositiveOptionOverridesNegativeOption_TestD2Ev +FNDA:1,_ZN5blaze61BlazercImportTest_BazelRcTryImportsMaintainsFlagOrdering_Test8TestBodyEv +FNDA:1,_ZN5blaze61BlazercImportTest_BazelRcTryImportsMaintainsFlagOrdering_TestC2Ev +FNDA:1,_ZN5blaze61BlazercImportTest_BazelRcTryImportsMaintainsFlagOrdering_TestD0Ev +FNDA:1,_ZN5blaze61BlazercImportTest_BazelRcTryImportsMaintainsFlagOrdering_TestD2Ev +FNDA:1,_ZN5blaze64BlazercImportTest_BazelRcTryImportDoesNotFailForMissingFile_Test8TestBodyEv +FNDA:1,_ZN5blaze64BlazercImportTest_BazelRcTryImportDoesNotFailForMissingFile_TestC2Ev +FNDA:1,_ZN5blaze64BlazercImportTest_BazelRcTryImportDoesNotFailForMissingFile_TestD0Ev +FNDA:1,_ZN5blaze64BlazercImportTest_BazelRcTryImportDoesNotFailForMissingFile_TestD2Ev +FNDA:1,_ZN5blaze65BlazercImportTest_ImportingAFileAndPassingItInCausesAWarning_Test8TestBodyEv +FNDA:1,_ZN5blaze65BlazercImportTest_ImportingAFileAndPassingItInCausesAWarning_TestC2Ev +FNDA:1,_ZN5blaze65BlazercImportTest_ImportingAFileAndPassingItInCausesAWarning_TestD0Ev +FNDA:1,_ZN5blaze65BlazercImportTest_ImportingAFileAndPassingItInCausesAWarning_TestD2Ev +FNDA:1,_ZN5blaze65ParseOptionsTest_IgnoreAllRcFilesIgnoresCommandLineRcFileToo_Test8TestBodyEv +FNDA:1,_ZN5blaze65ParseOptionsTest_IgnoreAllRcFilesIgnoresCommandLineRcFileToo_TestC2Ev +FNDA:1,_ZN5blaze65ParseOptionsTest_IgnoreAllRcFilesIgnoresCommandLineRcFileToo_TestD0Ev +FNDA:1,_ZN5blaze65ParseOptionsTest_IgnoreAllRcFilesIgnoresCommandLineRcFileToo_TestD2Ev +FNDA:1,_ZN5blaze67BlazercImportTest_BazelRcTryImportDoesNotFailForUnreadableFile_Test8TestBodyEv +FNDA:1,_ZN5blaze67BlazercImportTest_BazelRcTryImportDoesNotFailForUnreadableFile_TestC2Ev +FNDA:1,_ZN5blaze67BlazercImportTest_BazelRcTryImportDoesNotFailForUnreadableFile_TestD0Ev +FNDA:1,_ZN5blaze67BlazercImportTest_BazelRcTryImportDoesNotFailForUnreadableFile_TestD2Ev +FNDA:1,_ZN5blaze68BlazercImportTest_DoubleImportWithExcessPathSyntaxCauseAWarning_Test8TestBodyEv +FNDA:1,_ZN5blaze68BlazercImportTest_DoubleImportWithExcessPathSyntaxCauseAWarning_TestC2Ev +FNDA:1,_ZN5blaze68BlazercImportTest_DoubleImportWithExcessPathSyntaxCauseAWarning_TestD0Ev +FNDA:1,_ZN5blaze68BlazercImportTest_DoubleImportWithExcessPathSyntaxCauseAWarning_TestD2Ev +FNDA:1,_ZN5blaze68BlazercImportTest_TryImportingAFileAndPassingItInCausesAWarning_Test8TestBodyEv +FNDA:1,_ZN5blaze68BlazercImportTest_TryImportingAFileAndPassingItInCausesAWarning_TestC2Ev +FNDA:1,_ZN5blaze68BlazercImportTest_TryImportingAFileAndPassingItInCausesAWarning_TestD0Ev +FNDA:1,_ZN5blaze68BlazercImportTest_TryImportingAFileAndPassingItInCausesAWarning_TestD2Ev +FNDA:1,_ZN5blaze68ParseOptionsTest_IgnoreAllRcFilesIgnoresAllMasterAndUserRcFiles_Test8TestBodyEv +FNDA:1,_ZN5blaze68ParseOptionsTest_IgnoreAllRcFilesIgnoresAllMasterAndUserRcFiles_TestC2Ev +FNDA:1,_ZN5blaze68ParseOptionsTest_IgnoreAllRcFilesIgnoresAllMasterAndUserRcFiles_TestD0Ev +FNDA:1,_ZN5blaze68ParseOptionsTest_IgnoreAllRcFilesIgnoresAllMasterAndUserRcFiles_TestD2Ev +FNDA:1,_ZN5blaze69ParseOptionsTest_CommandLineBazelrcHasPriorityOverDefaultBazelrc_Test8TestBodyEv +FNDA:1,_ZN5blaze69ParseOptionsTest_CommandLineBazelrcHasPriorityOverDefaultBazelrc_TestC2Ev +FNDA:1,_ZN5blaze69ParseOptionsTest_CommandLineBazelrcHasPriorityOverDefaultBazelrc_TestD0Ev +FNDA:1,_ZN5blaze69ParseOptionsTest_CommandLineBazelrcHasPriorityOverDefaultBazelrc_TestD2Ev +FNDA:1,_ZN5blaze70ParseOptionsTest_MultipleStartupArgsInMasterBazelrcWorksCorrectly_Test8TestBodyEv +FNDA:1,_ZN5blaze70ParseOptionsTest_MultipleStartupArgsInMasterBazelrcWorksCorrectly_TestC2Ev +FNDA:1,_ZN5blaze70ParseOptionsTest_MultipleStartupArgsInMasterBazelrcWorksCorrectly_TestD0Ev +FNDA:1,_ZN5blaze70ParseOptionsTest_MultipleStartupArgsInMasterBazelrcWorksCorrectly_TestD2Ev +FNDA:1,_ZN5blaze71BlazercImportTest_DoubleTryImportWithExcessPathSyntaxCauseAWarning_Test8TestBodyEv +FNDA:1,_ZN5blaze71BlazercImportTest_DoubleTryImportWithExcessPathSyntaxCauseAWarning_TestC2Ev +FNDA:1,_ZN5blaze71BlazercImportTest_DoubleTryImportWithExcessPathSyntaxCauseAWarning_TestD0Ev +FNDA:1,_ZN5blaze71BlazercImportTest_DoubleTryImportWithExcessPathSyntaxCauseAWarning_TestD2Ev +FNDA:1,_ZN5blaze71ParseOptionsTest_ImportingStandardRcBeforeItIsLoadedCausesAWarning_Test8TestBodyEv +FNDA:1,_ZN5blaze71ParseOptionsTest_ImportingStandardRcBeforeItIsLoadedCausesAWarning_TestC2Ev +FNDA:1,_ZN5blaze71ParseOptionsTest_ImportingStandardRcBeforeItIsLoadedCausesAWarning_TestD0Ev +FNDA:1,_ZN5blaze71ParseOptionsTest_ImportingStandardRcBeforeItIsLoadedCausesAWarning_TestD2Ev +FNDA:1,_ZN5blaze72ParseOptionsTest_ImportingAPreviouslyLoadedStandardRcCausesAWarning_Test8TestBodyEv +FNDA:1,_ZN5blaze72ParseOptionsTest_ImportingAPreviouslyLoadedStandardRcCausesAWarning_TestC2Ev +FNDA:1,_ZN5blaze72ParseOptionsTest_ImportingAPreviouslyLoadedStandardRcCausesAWarning_TestD0Ev +FNDA:1,_ZN5blaze72ParseOptionsTest_ImportingAPreviouslyLoadedStandardRcCausesAWarning_TestD2Ev +FNDA:1,_ZN5blaze75BlazercImportTest_DoubleImportWithWorkspaceRelativeSyntaxCauseAWarning_Test8TestBodyEv +FNDA:1,_ZN5blaze75BlazercImportTest_DoubleImportWithWorkspaceRelativeSyntaxCauseAWarning_TestC2Ev +FNDA:1,_ZN5blaze75BlazercImportTest_DoubleImportWithWorkspaceRelativeSyntaxCauseAWarning_TestD0Ev +FNDA:1,_ZN5blaze75BlazercImportTest_DoubleImportWithWorkspaceRelativeSyntaxCauseAWarning_TestD2Ev +FNDA:1,_ZN5blaze76BlazercImportTest_DoubleImportWithEnclosingDirectorySyntaxCauseAWarning_Test8TestBodyEv +FNDA:1,_ZN5blaze76BlazercImportTest_DoubleImportWithEnclosingDirectorySyntaxCauseAWarning_TestC2Ev +FNDA:1,_ZN5blaze76BlazercImportTest_DoubleImportWithEnclosingDirectorySyntaxCauseAWarning_TestD0Ev +FNDA:1,_ZN5blaze76BlazercImportTest_DoubleImportWithEnclosingDirectorySyntaxCauseAWarning_TestD2Ev +FNDA:1,_ZN5blaze78BlazercImportTest_DoubleTryImportWithWorkspaceRelativeSyntaxCauseAWarning_Test8TestBodyEv +FNDA:1,_ZN5blaze78BlazercImportTest_DoubleTryImportWithWorkspaceRelativeSyntaxCauseAWarning_TestC2Ev +FNDA:1,_ZN5blaze78BlazercImportTest_DoubleTryImportWithWorkspaceRelativeSyntaxCauseAWarning_TestD0Ev +FNDA:1,_ZN5blaze78BlazercImportTest_DoubleTryImportWithWorkspaceRelativeSyntaxCauseAWarning_TestD2Ev +FNDA:1,_ZN5blaze80GetRcFileTest_GetRcFilesRespectsNoWorkspaceRcAndNoSystemAndNoHomeRcCombined_Test8TestBodyEv +FNDA:1,_ZN5blaze80GetRcFileTest_GetRcFilesRespectsNoWorkspaceRcAndNoSystemAndNoHomeRcCombined_TestC2Ev +FNDA:1,_ZN5blaze80GetRcFileTest_GetRcFilesRespectsNoWorkspaceRcAndNoSystemAndNoHomeRcCombined_TestD0Ev +FNDA:1,_ZN5blaze80GetRcFileTest_GetRcFilesRespectsNoWorkspaceRcAndNoSystemAndNoHomeRcCombined_TestD2Ev +FNDA:1,_ZN5blaze80ParseOptionsTest_IncorrectWorkspaceBazelrcIgnoredWhenNoWorkspaceRcIsPresent_Test8TestBodyEv +FNDA:1,_ZN5blaze80ParseOptionsTest_IncorrectWorkspaceBazelrcIgnoredWhenNoWorkspaceRcIsPresent_TestC2Ev +FNDA:1,_ZN5blaze80ParseOptionsTest_IncorrectWorkspaceBazelrcIgnoredWhenNoWorkspaceRcIsPresent_TestD0Ev +FNDA:1,_ZN5blaze80ParseOptionsTest_IncorrectWorkspaceBazelrcIgnoredWhenNoWorkspaceRcIsPresent_TestD2Ev +FNDA:4,_ZNK5blaze10RcFileTest15SetUpHomeRcFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS6_ +FNDA:8,_ZNK5blaze10RcFileTest17SetUpSystemRcFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS6_ +FNDA:30,_ZNK5blaze10RcFileTest20SetUpWorkspaceRcFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS6_ +FNDA:1,_ZNK5blaze10RcFileTest34SetUpLegacyMasterRcFileInWorkspaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS6_ +FNDA:1,_ZNK5blaze10RcFileTest38SetUpLegacyMasterRcFileAlongsideBinaryERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS6_ +FNDA:0,_ZNK5blaze31CanonicalSourcePathsAreMatcherPINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE10gmock_ImplIRKNS_6RcFileEE10DescribeToEPSo +FNDA:7,_ZNK5blaze31CanonicalSourcePathsAreMatcherPINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE10gmock_ImplIRKNS_6RcFileEE15MatchAndExplainESB_PN7testing19MatchResultListenerE +FNDA:0,_ZNK5blaze31CanonicalSourcePathsAreMatcherPINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE10gmock_ImplIRKNS_6RcFileEE17FormatDescriptionEb +FNDA:0,_ZNK5blaze31CanonicalSourcePathsAreMatcherPINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE10gmock_ImplIRKNS_6RcFileEE18DescribeNegationToEPSo +FNDA:0,_ZNK5blaze31CanonicalSourcePathsAreMatcherPIPKcE10gmock_ImplIRKNS_6RcFileEE10DescribeToEPSo +FNDA:1,_ZNK5blaze31CanonicalSourcePathsAreMatcherPIPKcE10gmock_ImplIRKNS_6RcFileEE15MatchAndExplainES7_PN7testing19MatchResultListenerE +FNDA:0,_ZNK5blaze31CanonicalSourcePathsAreMatcherPIPKcE10gmock_ImplIRKNS_6RcFileEE17FormatDescriptionB5cxx11Eb +FNDA:0,_ZNK5blaze31CanonicalSourcePathsAreMatcherPIPKcE10gmock_ImplIRKNS_6RcFileEE18DescribeNegationToEPSo +FNF:163 +FNH:157 +BRDA:54,0,0,- +BRDA:54,0,1,- +BRDA:54,0,2,- +BRDA:54,0,3,- +BRDA:54,0,4,- +BRDA:54,0,5,- +BRDA:54,0,6,- +BRDA:54,0,7,- +BRDA:54,0,8,- +BRDA:54,0,9,- +BRDA:54,0,10,- +BRDA:54,0,11,- +BRDA:54,0,0,- +BRDA:54,0,1,- +BRDA:54,0,2,- +BRDA:54,0,3,- +BRDA:54,0,4,- +BRDA:54,0,5,- +BRDA:54,0,6,- +BRDA:54,0,7,- +BRDA:54,0,8,- +BRDA:54,0,9,- +BRDA:54,0,0,- +BRDA:54,0,1,- +BRDA:54,0,0,- +BRDA:54,0,1,- +BRDA:54,0,0,- +BRDA:54,0,1,- +BRDA:54,0,0,- +BRDA:54,0,1,- +BRDA:54,0,0,7 +BRDA:54,0,1,0 +BRDA:55,0,0,7 +BRDA:55,0,1,0 +BRDA:55,0,0,1 +BRDA:55,0,1,0 +BRDA:62,0,0,34 +BRDA:62,0,1,0 +BRDA:62,0,2,34 +BRDA:62,0,3,0 +BRDA:62,0,4,34 +BRDA:62,0,5,0 +BRDA:62,0,6,34 +BRDA:62,0,7,0 +BRDA:64,0,0,34 +BRDA:64,0,1,0 +BRDA:64,0,2,34 +BRDA:64,0,3,0 +BRDA:64,0,4,34 +BRDA:64,0,5,0 +BRDA:64,0,6,34 +BRDA:64,0,7,0 +BRDA:65,0,0,34 +BRDA:65,0,1,0 +BRDA:65,0,2,34 +BRDA:65,0,3,0 +BRDA:65,0,4,34 +BRDA:65,0,5,0 +BRDA:65,0,6,34 +BRDA:65,0,7,0 +BRDA:66,0,0,34 +BRDA:66,0,1,0 +BRDA:66,0,2,34 +BRDA:66,0,3,0 +BRDA:67,0,0,34 +BRDA:67,0,1,0 +BRDA:67,0,2,34 +BRDA:67,0,3,0 +BRDA:68,0,0,34 +BRDA:68,0,1,0 +BRDA:68,0,2,34 +BRDA:68,0,3,0 +BRDA:69,0,0,34 +BRDA:69,0,1,0 +BRDA:72,0,0,34 +BRDA:72,0,1,0 +BRDA:72,0,2,0 +BRDA:72,0,3,34 +BRDA:72,0,4,0 +BRDA:72,0,5,0 +BRDA:72,0,6,0 +BRDA:72,0,7,0 +BRDA:72,0,8,0 +BRDA:72,0,9,0 +BRDA:72,0,10,0 +BRDA:72,0,11,0 +BRDA:72,0,12,34 +BRDA:72,0,13,0 +BRDA:73,0,0,34 +BRDA:73,0,1,0 +BRDA:73,0,2,0 +BRDA:73,0,3,34 +BRDA:73,0,4,0 +BRDA:73,0,5,0 +BRDA:73,0,6,0 +BRDA:73,0,7,0 +BRDA:73,0,8,0 +BRDA:73,0,9,0 +BRDA:73,0,10,0 +BRDA:73,0,11,0 +BRDA:73,0,12,34 +BRDA:73,0,13,0 +BRDA:74,0,0,34 +BRDA:74,0,1,0 +BRDA:74,0,2,0 +BRDA:74,0,3,34 +BRDA:74,0,4,0 +BRDA:74,0,5,0 +BRDA:74,0,6,0 +BRDA:74,0,7,0 +BRDA:74,0,8,0 +BRDA:74,0,9,0 +BRDA:74,0,10,0 +BRDA:74,0,11,0 +BRDA:74,0,12,34 +BRDA:74,0,13,0 +BRDA:75,0,0,34 +BRDA:75,0,1,0 +BRDA:75,0,2,0 +BRDA:75,0,3,34 +BRDA:75,0,4,0 +BRDA:75,0,5,0 +BRDA:75,0,6,0 +BRDA:75,0,7,0 +BRDA:75,0,8,0 +BRDA:75,0,9,0 +BRDA:75,0,10,0 +BRDA:75,0,11,0 +BRDA:75,0,12,34 +BRDA:75,0,13,0 +BRDA:79,0,0,34 +BRDA:79,0,1,0 +BRDA:79,0,2,0 +BRDA:79,0,3,34 +BRDA:79,0,4,0 +BRDA:79,0,5,0 +BRDA:79,0,6,0 +BRDA:79,0,7,0 +BRDA:79,0,8,0 +BRDA:79,0,9,0 +BRDA:79,0,10,34 +BRDA:79,0,11,0 +BRDA:92,0,0,34 +BRDA:92,0,1,0 +BRDA:92,0,2,0 +BRDA:92,0,3,34 +BRDA:92,0,4,0 +BRDA:92,0,5,0 +BRDA:92,0,6,0 +BRDA:92,0,7,0 +BRDA:92,0,8,0 +BRDA:92,0,9,0 +BRDA:92,0,10,0 +BRDA:92,0,11,0 +BRDA:92,0,12,34 +BRDA:92,0,13,0 +BRDA:93,0,0,34 +BRDA:93,0,1,0 +BRDA:96,0,0,34 +BRDA:96,0,1,0 +BRDA:97,0,0,34 +BRDA:97,0,1,0 +BRDA:97,0,2,34 +BRDA:97,0,3,0 +BRDA:106,0,0,34 +BRDA:106,0,1,0 +BRDA:107,0,0,54 +BRDA:107,0,1,34 +BRDA:108,0,0,54 +BRDA:108,0,1,0 +BRDA:110,0,0,34 +BRDA:110,0,1,0 +BRDA:111,0,0,62 +BRDA:111,0,1,34 +BRDA:112,0,0,62 +BRDA:112,0,1,0 +BRDA:114,0,0,34 +BRDA:114,0,1,0 +BRDA:115,0,0,66 +BRDA:115,0,1,34 +BRDA:116,0,0,66 +BRDA:116,0,1,0 +BRDA:118,0,0,34 +BRDA:118,0,1,0 +BRDA:119,0,0,67 +BRDA:119,0,1,34 +BRDA:120,0,0,67 +BRDA:120,0,1,0 +BRDA:127,0,0,8 +BRDA:127,0,1,0 +BRDA:127,0,2,8 +BRDA:127,0,3,0 +BRDA:127,0,4,8 +BRDA:127,0,5,0 +BRDA:129,0,0,8 +BRDA:129,0,1,0 +BRDA:129,0,2,8 +BRDA:129,0,3,0 +BRDA:130,0,0,8 +BRDA:130,0,1,0 +BRDA:139,0,0,30 +BRDA:139,0,1,0 +BRDA:139,0,2,30 +BRDA:139,0,3,0 +BRDA:140,0,0,30 +BRDA:140,0,1,0 +BRDA:140,0,2,30 +BRDA:140,0,3,0 +BRDA:141,0,0,30 +BRDA:141,0,1,0 +BRDA:149,0,0,4 +BRDA:149,0,1,0 +BRDA:149,0,2,4 +BRDA:149,0,3,0 +BRDA:150,0,0,4 +BRDA:150,0,1,0 +BRDA:150,0,2,4 +BRDA:150,0,3,0 +BRDA:151,0,0,4 +BRDA:151,0,1,0 +BRDA:159,0,0,1 +BRDA:159,0,1,0 +BRDA:159,0,2,1 +BRDA:159,0,3,0 +BRDA:161,0,0,1 +BRDA:161,0,1,0 +BRDA:161,0,2,1 +BRDA:161,0,3,0 +BRDA:162,0,0,1 +BRDA:162,0,1,0 +BRDA:162,0,2,1 +BRDA:162,0,3,0 +BRDA:162,0,4,1 +BRDA:162,0,5,0 +BRDA:163,0,0,1 +BRDA:163,0,1,0 +BRDA:163,0,2,1 +BRDA:163,0,3,0 +BRDA:164,0,0,1 +BRDA:164,0,1,0 +BRDA:173,0,0,1 +BRDA:173,0,1,0 +BRDA:173,0,2,1 +BRDA:173,0,3,0 +BRDA:174,0,0,1 +BRDA:174,0,1,0 +BRDA:174,0,2,1 +BRDA:174,0,3,0 +BRDA:175,0,0,1 +BRDA:175,0,1,0 +BRDA:195,0,0,1 +BRDA:195,0,1,0 +BRDA:195,0,2,1 +BRDA:195,0,3,0 +BRDA:195,0,4,0 +BRDA:195,0,5,1 +BRDA:195,0,6,0 +BRDA:195,0,7,0 +BRDA:195,0,8,0 +BRDA:195,0,9,0 +BRDA:195,0,10,0 +BRDA:195,0,11,0 +BRDA:195,0,12,0 +BRDA:195,0,13,0 +BRDA:195,0,14,1 +BRDA:195,0,15,0 +BRDA:197,0,0,1 +BRDA:197,0,1,0 +BRDA:197,0,2,1 +BRDA:197,0,3,0 +BRDA:197,0,4,0 +BRDA:197,0,5,1 +BRDA:197,0,6,0 +BRDA:197,0,7,0 +BRDA:197,0,8,0 +BRDA:197,0,9,0 +BRDA:197,0,10,0 +BRDA:197,0,11,0 +BRDA:197,0,12,0 +BRDA:197,0,13,0 +BRDA:197,0,14,1 +BRDA:197,0,15,0 +BRDA:199,0,0,1 +BRDA:199,0,1,0 +BRDA:199,0,2,1 +BRDA:199,0,3,0 +BRDA:199,0,4,0 +BRDA:199,0,5,1 +BRDA:199,0,6,0 +BRDA:199,0,7,0 +BRDA:199,0,8,0 +BRDA:199,0,9,0 +BRDA:199,0,10,0 +BRDA:199,0,11,0 +BRDA:199,0,12,0 +BRDA:199,0,13,0 +BRDA:199,0,14,1 +BRDA:199,0,15,0 +BRDA:201,0,0,1 +BRDA:201,0,1,0 +BRDA:201,0,2,1 +BRDA:201,0,3,0 +BRDA:202,0,0,1 +BRDA:202,0,1,0 +BRDA:205,0,0,1 +BRDA:205,0,1,0 +BRDA:207,0,0,1 +BRDA:207,0,1,0 +BRDA:207,0,2,0 +BRDA:207,0,3,1 +BRDA:207,0,4,0 +BRDA:207,0,5,0 +BRDA:207,0,6,0 +BRDA:207,0,7,0 +BRDA:207,0,8,0 +BRDA:207,0,9,0 +BRDA:208,0,0,1 +BRDA:208,0,1,0 +BRDA:208,0,2,0 +BRDA:208,0,3,1 +BRDA:208,0,4,0 +BRDA:208,0,5,0 +BRDA:208,0,6,0 +BRDA:208,0,7,0 +BRDA:208,0,8,0 +BRDA:208,0,9,0 +BRDA:212,0,0,1 +BRDA:212,0,1,0 +BRDA:212,0,2,1 +BRDA:212,0,3,0 +BRDA:212,0,4,1 +BRDA:212,0,5,0 +BRDA:212,0,6,1 +BRDA:212,0,7,0 +BRDA:212,0,8,1 +BRDA:212,0,9,0 +BRDA:212,0,10,1 +BRDA:212,0,11,0 +BRDA:212,0,12,1 +BRDA:212,0,13,0 +BRDA:212,0,14,1 +BRDA:212,0,15,0 +BRDA:212,0,16,1 +BRDA:212,0,17,0 +BRDA:212,0,18,1 +BRDA:212,0,19,0 +BRDA:212,0,20,1 +BRDA:212,0,21,0 +BRDA:212,0,22,1 +BRDA:212,0,23,0 +BRDA:212,0,24,0 +BRDA:212,0,25,1 +BRDA:212,0,26,0 +BRDA:212,0,27,0 +BRDA:212,0,28,0 +BRDA:212,0,29,0 +BRDA:212,0,30,0 +BRDA:212,0,31,0 +BRDA:216,0,0,1 +BRDA:216,0,1,0 +BRDA:220,0,0,1 +BRDA:220,0,1,0 +BRDA:220,0,2,1 +BRDA:220,0,3,0 +BRDA:220,0,4,0 +BRDA:220,0,5,1 +BRDA:220,0,6,0 +BRDA:220,0,7,0 +BRDA:220,0,8,0 +BRDA:220,0,9,0 +BRDA:220,0,10,0 +BRDA:220,0,11,0 +BRDA:220,0,12,0 +BRDA:220,0,13,0 +BRDA:220,0,14,1 +BRDA:220,0,15,0 +BRDA:222,0,0,1 +BRDA:222,0,1,0 +BRDA:222,0,2,1 +BRDA:222,0,3,0 +BRDA:222,0,4,0 +BRDA:222,0,5,1 +BRDA:222,0,6,0 +BRDA:222,0,7,0 +BRDA:222,0,8,0 +BRDA:222,0,9,0 +BRDA:222,0,10,0 +BRDA:222,0,11,0 +BRDA:222,0,12,0 +BRDA:222,0,13,0 +BRDA:222,0,14,1 +BRDA:222,0,15,0 +BRDA:224,0,0,1 +BRDA:224,0,1,0 +BRDA:224,0,2,1 +BRDA:224,0,3,0 +BRDA:224,0,4,0 +BRDA:224,0,5,1 +BRDA:224,0,6,0 +BRDA:224,0,7,0 +BRDA:224,0,8,0 +BRDA:224,0,9,0 +BRDA:224,0,10,0 +BRDA:224,0,11,0 +BRDA:224,0,12,0 +BRDA:224,0,13,0 +BRDA:224,0,14,1 +BRDA:224,0,15,0 +BRDA:227,0,0,1 +BRDA:227,0,1,0 +BRDA:227,0,2,1 +BRDA:227,0,3,0 +BRDA:227,0,4,1 +BRDA:227,0,5,0 +BRDA:227,0,6,1 +BRDA:227,0,7,0 +BRDA:228,0,0,1 +BRDA:228,0,1,0 +BRDA:231,0,0,1 +BRDA:231,0,1,0 +BRDA:233,0,0,1 +BRDA:233,0,1,0 +BRDA:233,0,2,0 +BRDA:233,0,3,1 +BRDA:233,0,4,0 +BRDA:233,0,5,0 +BRDA:233,0,6,0 +BRDA:233,0,7,0 +BRDA:233,0,8,0 +BRDA:233,0,9,0 +BRDA:234,0,0,1 +BRDA:234,0,1,0 +BRDA:234,0,2,0 +BRDA:234,0,3,1 +BRDA:234,0,4,0 +BRDA:234,0,5,0 +BRDA:234,0,6,0 +BRDA:234,0,7,0 +BRDA:234,0,8,0 +BRDA:234,0,9,0 +BRDA:236,0,0,1 +BRDA:236,0,1,0 +BRDA:236,0,2,1 +BRDA:236,0,3,0 +BRDA:236,0,4,1 +BRDA:236,0,5,0 +BRDA:236,0,6,1 +BRDA:236,0,7,0 +BRDA:236,0,8,1 +BRDA:236,0,9,0 +BRDA:236,0,10,1 +BRDA:236,0,11,0 +BRDA:236,0,12,1 +BRDA:236,0,13,0 +BRDA:236,0,14,1 +BRDA:236,0,15,0 +BRDA:236,0,16,1 +BRDA:236,0,17,0 +BRDA:236,0,18,0 +BRDA:236,0,19,1 +BRDA:236,0,20,0 +BRDA:236,0,21,0 +BRDA:236,0,22,0 +BRDA:236,0,23,0 +BRDA:236,0,24,0 +BRDA:236,0,25,0 +BRDA:239,0,0,1 +BRDA:239,0,1,0 +BRDA:243,0,0,1 +BRDA:243,0,1,0 +BRDA:243,0,2,1 +BRDA:243,0,3,0 +BRDA:243,0,4,0 +BRDA:243,0,5,1 +BRDA:243,0,6,0 +BRDA:243,0,7,0 +BRDA:243,0,8,0 +BRDA:243,0,9,0 +BRDA:243,0,10,0 +BRDA:243,0,11,0 +BRDA:243,0,12,0 +BRDA:243,0,13,0 +BRDA:243,0,14,1 +BRDA:243,0,15,0 +BRDA:245,0,0,1 +BRDA:245,0,1,0 +BRDA:245,0,2,1 +BRDA:245,0,3,0 +BRDA:245,0,4,0 +BRDA:245,0,5,1 +BRDA:245,0,6,0 +BRDA:245,0,7,0 +BRDA:245,0,8,0 +BRDA:245,0,9,0 +BRDA:245,0,10,0 +BRDA:245,0,11,0 +BRDA:245,0,12,0 +BRDA:245,0,13,0 +BRDA:245,0,14,1 +BRDA:245,0,15,0 +BRDA:247,0,0,1 +BRDA:247,0,1,0 +BRDA:247,0,2,1 +BRDA:247,0,3,0 +BRDA:247,0,4,0 +BRDA:247,0,5,1 +BRDA:247,0,6,0 +BRDA:247,0,7,0 +BRDA:247,0,8,0 +BRDA:247,0,9,0 +BRDA:247,0,10,0 +BRDA:247,0,11,0 +BRDA:247,0,12,0 +BRDA:247,0,13,0 +BRDA:247,0,14,1 +BRDA:247,0,15,0 +BRDA:250,0,0,1 +BRDA:250,0,1,0 +BRDA:250,0,2,1 +BRDA:250,0,3,0 +BRDA:250,0,4,1 +BRDA:250,0,5,0 +BRDA:250,0,6,1 +BRDA:250,0,7,0 +BRDA:251,0,0,1 +BRDA:251,0,1,0 +BRDA:254,0,0,1 +BRDA:254,0,1,0 +BRDA:256,0,0,1 +BRDA:256,0,1,0 +BRDA:256,0,2,0 +BRDA:256,0,3,1 +BRDA:256,0,4,0 +BRDA:256,0,5,0 +BRDA:256,0,6,0 +BRDA:256,0,7,0 +BRDA:256,0,8,0 +BRDA:256,0,9,0 +BRDA:257,0,0,1 +BRDA:257,0,1,0 +BRDA:257,0,2,0 +BRDA:257,0,3,1 +BRDA:257,0,4,0 +BRDA:257,0,5,0 +BRDA:257,0,6,0 +BRDA:257,0,7,0 +BRDA:257,0,8,0 +BRDA:257,0,9,0 +BRDA:259,0,0,1 +BRDA:259,0,1,0 +BRDA:259,0,2,1 +BRDA:259,0,3,0 +BRDA:259,0,4,1 +BRDA:259,0,5,0 +BRDA:259,0,6,1 +BRDA:259,0,7,0 +BRDA:259,0,8,1 +BRDA:259,0,9,0 +BRDA:259,0,10,1 +BRDA:259,0,11,0 +BRDA:259,0,12,1 +BRDA:259,0,13,0 +BRDA:259,0,14,1 +BRDA:259,0,15,0 +BRDA:259,0,16,1 +BRDA:259,0,17,0 +BRDA:259,0,18,0 +BRDA:259,0,19,1 +BRDA:259,0,20,0 +BRDA:259,0,21,0 +BRDA:259,0,22,0 +BRDA:259,0,23,0 +BRDA:259,0,24,0 +BRDA:259,0,25,0 +BRDA:262,0,0,1 +BRDA:262,0,1,0 +BRDA:267,0,0,1 +BRDA:267,0,1,0 +BRDA:267,0,2,1 +BRDA:267,0,3,0 +BRDA:267,0,4,0 +BRDA:267,0,5,1 +BRDA:267,0,6,0 +BRDA:267,0,7,0 +BRDA:267,0,8,0 +BRDA:267,0,9,0 +BRDA:267,0,10,0 +BRDA:267,0,11,0 +BRDA:267,0,12,0 +BRDA:267,0,13,0 +BRDA:267,0,14,1 +BRDA:267,0,15,0 +BRDA:269,0,0,1 +BRDA:269,0,1,0 +BRDA:269,0,2,1 +BRDA:269,0,3,0 +BRDA:269,0,4,0 +BRDA:269,0,5,1 +BRDA:269,0,6,0 +BRDA:269,0,7,0 +BRDA:269,0,8,0 +BRDA:269,0,9,0 +BRDA:269,0,10,0 +BRDA:269,0,11,0 +BRDA:269,0,12,0 +BRDA:269,0,13,0 +BRDA:269,0,14,1 +BRDA:269,0,15,0 +BRDA:271,0,0,1 +BRDA:271,0,1,0 +BRDA:271,0,2,1 +BRDA:271,0,3,0 +BRDA:271,0,4,0 +BRDA:271,0,5,1 +BRDA:271,0,6,0 +BRDA:271,0,7,0 +BRDA:271,0,8,0 +BRDA:271,0,9,0 +BRDA:271,0,10,0 +BRDA:271,0,11,0 +BRDA:271,0,12,0 +BRDA:271,0,13,0 +BRDA:271,0,14,1 +BRDA:271,0,15,0 +BRDA:275,0,0,1 +BRDA:275,0,1,0 +BRDA:275,0,2,1 +BRDA:275,0,3,0 +BRDA:275,0,4,1 +BRDA:275,0,5,0 +BRDA:275,0,6,1 +BRDA:275,0,7,0 +BRDA:275,0,8,1 +BRDA:275,0,9,0 +BRDA:275,0,10,1 +BRDA:275,0,11,0 +BRDA:276,0,0,1 +BRDA:276,0,1,0 +BRDA:279,0,0,1 +BRDA:279,0,1,0 +BRDA:281,0,0,1 +BRDA:281,0,1,0 +BRDA:281,0,2,0 +BRDA:281,0,3,1 +BRDA:281,0,4,0 +BRDA:281,0,5,0 +BRDA:281,0,6,0 +BRDA:281,0,7,0 +BRDA:281,0,8,0 +BRDA:281,0,9,0 +BRDA:282,0,0,1 +BRDA:282,0,1,0 +BRDA:282,0,2,0 +BRDA:282,0,3,1 +BRDA:282,0,4,0 +BRDA:282,0,5,0 +BRDA:282,0,6,0 +BRDA:282,0,7,0 +BRDA:282,0,8,0 +BRDA:282,0,9,0 +BRDA:284,0,0,1 +BRDA:284,0,1,0 +BRDA:284,0,2,1 +BRDA:284,0,3,0 +BRDA:284,0,4,1 +BRDA:284,0,5,0 +BRDA:284,0,6,0 +BRDA:284,0,7,1 +BRDA:284,0,8,0 +BRDA:284,0,9,0 +BRDA:284,0,10,0 +BRDA:284,0,11,0 +BRDA:284,0,12,0 +BRDA:284,0,13,0 +BRDA:285,0,0,1 +BRDA:285,0,1,0 +BRDA:289,0,0,1 +BRDA:289,0,1,0 +BRDA:289,0,2,1 +BRDA:289,0,3,0 +BRDA:289,0,4,0 +BRDA:289,0,5,1 +BRDA:289,0,6,0 +BRDA:289,0,7,0 +BRDA:289,0,8,0 +BRDA:289,0,9,0 +BRDA:289,0,10,0 +BRDA:289,0,11,0 +BRDA:289,0,12,0 +BRDA:289,0,13,0 +BRDA:289,0,14,1 +BRDA:289,0,15,0 +BRDA:291,0,0,1 +BRDA:291,0,1,0 +BRDA:291,0,2,1 +BRDA:291,0,3,0 +BRDA:291,0,4,0 +BRDA:291,0,5,1 +BRDA:291,0,6,0 +BRDA:291,0,7,0 +BRDA:291,0,8,0 +BRDA:291,0,9,0 +BRDA:291,0,10,0 +BRDA:291,0,11,0 +BRDA:291,0,12,0 +BRDA:291,0,13,0 +BRDA:291,0,14,1 +BRDA:291,0,15,0 +BRDA:293,0,0,1 +BRDA:293,0,1,0 +BRDA:293,0,2,1 +BRDA:293,0,3,0 +BRDA:294,0,0,1 +BRDA:294,0,1,0 +BRDA:297,0,0,1 +BRDA:297,0,1,0 +BRDA:299,0,0,1 +BRDA:299,0,1,0 +BRDA:301,0,0,1 +BRDA:301,0,1,0 +BRDA:303,0,0,1 +BRDA:303,0,1,0 +BRDA:303,0,2,0 +BRDA:303,0,3,1 +BRDA:303,0,4,0 +BRDA:303,0,5,0 +BRDA:303,0,6,0 +BRDA:303,0,7,0 +BRDA:303,0,8,0 +BRDA:303,0,9,0 +BRDA:304,0,0,1 +BRDA:304,0,1,0 +BRDA:304,0,2,0 +BRDA:304,0,3,1 +BRDA:304,0,4,0 +BRDA:304,0,5,0 +BRDA:304,0,6,0 +BRDA:304,0,7,0 +BRDA:304,0,8,0 +BRDA:304,0,9,0 +BRDA:308,0,0,1 +BRDA:308,0,1,0 +BRDA:308,0,2,1 +BRDA:308,0,3,0 +BRDA:308,0,4,1 +BRDA:308,0,5,0 +BRDA:308,0,6,0 +BRDA:308,0,7,1 +BRDA:308,0,8,0 +BRDA:308,0,9,0 +BRDA:308,0,10,0 +BRDA:308,0,11,0 +BRDA:308,0,12,0 +BRDA:308,0,13,0 +BRDA:310,0,0,1 +BRDA:310,0,1,0 +BRDA:310,0,2,1 +BRDA:310,0,3,0 +BRDA:310,0,4,1 +BRDA:310,0,5,0 +BRDA:310,0,6,0 +BRDA:310,0,7,1 +BRDA:310,0,8,0 +BRDA:310,0,9,0 +BRDA:310,0,10,0 +BRDA:310,0,11,0 +BRDA:310,0,12,0 +BRDA:310,0,13,0 +BRDA:311,0,0,1 +BRDA:311,0,1,0 +BRDA:311,0,2,1 +BRDA:311,0,3,0 +BRDA:311,0,4,1 +BRDA:311,0,5,0 +BRDA:311,0,6,0 +BRDA:311,0,7,1 +BRDA:311,0,8,0 +BRDA:311,0,9,0 +BRDA:311,0,10,0 +BRDA:311,0,11,0 +BRDA:311,0,12,0 +BRDA:311,0,13,0 +BRDA:312,0,0,1 +BRDA:312,0,1,0 +BRDA:316,0,0,1 +BRDA:316,0,1,0 +BRDA:316,0,2,1 +BRDA:316,0,3,0 +BRDA:317,0,0,1 +BRDA:317,0,1,0 +BRDA:317,0,2,1 +BRDA:317,0,3,0 +BRDA:317,0,4,0 +BRDA:317,0,5,1 +BRDA:317,0,6,0 +BRDA:317,0,7,0 +BRDA:317,0,8,0 +BRDA:317,0,9,0 +BRDA:317,0,10,0 +BRDA:317,0,11,0 +BRDA:317,0,12,0 +BRDA:317,0,13,0 +BRDA:318,0,0,1 +BRDA:318,0,1,0 +BRDA:319,0,0,1 +BRDA:319,0,1,0 +BRDA:319,0,2,1 +BRDA:319,0,3,0 +BRDA:319,0,4,0 +BRDA:319,0,5,1 +BRDA:319,0,6,0 +BRDA:319,0,7,0 +BRDA:319,0,8,0 +BRDA:319,0,9,0 +BRDA:319,0,10,0 +BRDA:319,0,11,0 +BRDA:319,0,12,0 +BRDA:319,0,13,0 +BRDA:319,0,14,1 +BRDA:319,0,15,0 +BRDA:323,0,0,1 +BRDA:323,0,1,0 +BRDA:323,0,2,1 +BRDA:323,0,3,0 +BRDA:323,0,4,1 +BRDA:323,0,5,0 +BRDA:323,0,6,1 +BRDA:323,0,7,0 +BRDA:324,0,0,1 +BRDA:324,0,1,0 +BRDA:327,0,0,1 +BRDA:327,0,1,0 +BRDA:329,0,0,1 +BRDA:329,0,1,0 +BRDA:329,0,2,0 +BRDA:329,0,3,1 +BRDA:329,0,4,0 +BRDA:329,0,5,0 +BRDA:329,0,6,0 +BRDA:329,0,7,0 +BRDA:329,0,8,0 +BRDA:329,0,9,0 +BRDA:330,0,0,1 +BRDA:330,0,1,0 +BRDA:330,0,2,0 +BRDA:330,0,3,1 +BRDA:330,0,4,0 +BRDA:330,0,5,0 +BRDA:330,0,6,0 +BRDA:330,0,7,0 +BRDA:330,0,8,0 +BRDA:330,0,9,0 +BRDA:334,0,0,1 +BRDA:334,0,1,0 +BRDA:334,0,2,0 +BRDA:334,0,3,1 +BRDA:334,0,4,0 +BRDA:334,0,5,0 +BRDA:334,0,6,0 +BRDA:334,0,7,0 +BRDA:334,0,8,0 +BRDA:334,0,9,0 +BRDA:334,0,10,1 +BRDA:334,0,11,0 +BRDA:335,0,0,1 +BRDA:335,0,1,0 +BRDA:335,0,2,0 +BRDA:335,0,3,1 +BRDA:335,0,4,0 +BRDA:335,0,5,0 +BRDA:335,0,6,0 +BRDA:335,0,7,0 +BRDA:335,0,8,0 +BRDA:335,0,9,0 +BRDA:335,0,10,1 +BRDA:335,0,11,0 +BRDA:336,0,0,1 +BRDA:336,0,1,0 +BRDA:336,0,2,1 +BRDA:336,0,3,0 +BRDA:336,0,4,1 +BRDA:336,0,5,0 +BRDA:336,0,6,0 +BRDA:336,0,7,1 +BRDA:336,0,8,0 +BRDA:336,0,9,0 +BRDA:336,0,10,0 +BRDA:336,0,11,0 +BRDA:336,0,12,0 +BRDA:336,0,13,0 +BRDA:338,0,0,1 +BRDA:338,0,1,0 +BRDA:345,0,0,1 +BRDA:345,0,1,0 +BRDA:345,0,2,1 +BRDA:345,0,3,0 +BRDA:345,0,4,1 +BRDA:345,0,5,0 +BRDA:345,0,6,1 +BRDA:345,0,7,0 +BRDA:345,0,8,1 +BRDA:345,0,9,0 +BRDA:345,0,10,1 +BRDA:345,0,11,0 +BRDA:345,0,12,1 +BRDA:345,0,13,0 +BRDA:346,0,0,1 +BRDA:346,0,1,0 +BRDA:349,0,0,1 +BRDA:349,0,1,0 +BRDA:352,0,0,1 +BRDA:352,0,1,0 +BRDA:352,0,2,0 +BRDA:352,0,3,1 +BRDA:352,0,4,0 +BRDA:352,0,5,0 +BRDA:352,0,6,0 +BRDA:352,0,7,0 +BRDA:352,0,8,0 +BRDA:352,0,9,0 +BRDA:353,0,0,1 +BRDA:353,0,1,0 +BRDA:353,0,2,0 +BRDA:353,0,3,1 +BRDA:353,0,4,0 +BRDA:353,0,5,0 +BRDA:353,0,6,0 +BRDA:353,0,7,0 +BRDA:353,0,8,0 +BRDA:353,0,9,0 +BRDA:355,0,0,1 +BRDA:355,0,1,0 +BRDA:355,0,2,1 +BRDA:355,0,3,0 +BRDA:355,0,4,1 +BRDA:355,0,5,0 +BRDA:355,0,6,1 +BRDA:355,0,7,0 +BRDA:355,0,8,1 +BRDA:355,0,9,0 +BRDA:355,0,10,0 +BRDA:355,0,11,1 +BRDA:355,0,12,0 +BRDA:355,0,13,0 +BRDA:355,0,14,0 +BRDA:355,0,15,0 +BRDA:355,0,16,0 +BRDA:355,0,17,0 +BRDA:367,0,0,21 +BRDA:367,0,1,0 +BRDA:369,0,0,21 +BRDA:369,0,1,0 +BRDA:370,0,0,21 +BRDA:370,0,1,0 +BRDA:372,0,0,21 +BRDA:372,0,1,0 +BRDA:372,0,2,0 +BRDA:372,0,3,21 +BRDA:372,0,4,0 +BRDA:372,0,5,0 +BRDA:372,0,6,0 +BRDA:372,0,7,0 +BRDA:372,0,8,0 +BRDA:372,0,9,0 +BRDA:372,0,10,0 +BRDA:372,0,11,0 +BRDA:372,0,12,21 +BRDA:372,0,13,0 +BRDA:373,0,0,21 +BRDA:373,0,1,0 +BRDA:373,0,2,21 +BRDA:373,0,3,0 +BRDA:373,0,4,21 +BRDA:373,0,5,0 +BRDA:373,0,6,0 +BRDA:373,0,7,21 +BRDA:373,0,8,0 +BRDA:373,0,9,0 +BRDA:373,0,10,0 +BRDA:373,0,11,0 +BRDA:373,0,12,0 +BRDA:373,0,13,0 +BRDA:373,0,14,21 +BRDA:373,0,15,0 +BRDA:374,0,0,21 +BRDA:374,0,1,0 +BRDA:374,0,2,21 +BRDA:374,0,3,0 +BRDA:374,0,4,21 +BRDA:374,0,5,0 +BRDA:374,0,6,0 +BRDA:374,0,7,21 +BRDA:374,0,8,0 +BRDA:374,0,9,0 +BRDA:374,0,10,0 +BRDA:374,0,11,0 +BRDA:374,0,12,0 +BRDA:374,0,13,0 +BRDA:374,0,14,21 +BRDA:374,0,15,0 +BRDA:375,0,0,21 +BRDA:375,0,1,0 +BRDA:375,0,2,21 +BRDA:375,0,3,0 +BRDA:382,0,0,1 +BRDA:382,0,1,0 +BRDA:382,0,2,1 +BRDA:382,0,3,0 +BRDA:382,0,4,0 +BRDA:382,0,5,1 +BRDA:382,0,6,0 +BRDA:382,0,7,0 +BRDA:382,0,8,0 +BRDA:382,0,9,0 +BRDA:382,0,10,0 +BRDA:382,0,11,0 +BRDA:382,0,12,0 +BRDA:382,0,13,0 +BRDA:382,0,14,1 +BRDA:382,0,15,0 +BRDA:384,0,0,1 +BRDA:384,0,1,0 +BRDA:384,0,2,1 +BRDA:384,0,3,0 +BRDA:384,0,4,0 +BRDA:384,0,5,1 +BRDA:384,0,6,0 +BRDA:384,0,7,0 +BRDA:384,0,8,0 +BRDA:384,0,9,0 +BRDA:384,0,10,0 +BRDA:384,0,11,0 +BRDA:384,0,12,0 +BRDA:384,0,13,0 +BRDA:384,0,14,1 +BRDA:384,0,15,0 +BRDA:386,0,0,1 +BRDA:386,0,1,0 +BRDA:386,0,2,1 +BRDA:386,0,3,0 +BRDA:387,0,0,1 +BRDA:387,0,1,0 +BRDA:387,0,2,1 +BRDA:387,0,3,0 +BRDA:387,0,4,0 +BRDA:387,0,5,1 +BRDA:387,0,6,0 +BRDA:387,0,7,0 +BRDA:387,0,8,0 +BRDA:387,0,9,0 +BRDA:387,0,10,0 +BRDA:387,0,11,0 +BRDA:387,0,12,0 +BRDA:387,0,13,0 +BRDA:388,0,0,1 +BRDA:388,0,1,0 +BRDA:389,0,0,1 +BRDA:389,0,1,0 +BRDA:389,0,2,1 +BRDA:389,0,3,0 +BRDA:389,0,4,0 +BRDA:389,0,5,1 +BRDA:389,0,6,0 +BRDA:389,0,7,0 +BRDA:389,0,8,0 +BRDA:389,0,9,0 +BRDA:389,0,10,0 +BRDA:389,0,11,0 +BRDA:389,0,12,0 +BRDA:389,0,13,0 +BRDA:389,0,14,1 +BRDA:389,0,15,0 +BRDA:392,0,0,1 +BRDA:392,0,1,0 +BRDA:392,0,2,1 +BRDA:392,0,3,0 +BRDA:392,0,4,1 +BRDA:392,0,5,0 +BRDA:392,0,6,1 +BRDA:392,0,7,0 +BRDA:396,0,0,1 +BRDA:396,0,1,0 +BRDA:396,0,2,1 +BRDA:396,0,3,0 +BRDA:396,0,4,0 +BRDA:396,0,5,1 +BRDA:396,0,6,0 +BRDA:396,0,7,0 +BRDA:396,0,8,0 +BRDA:396,0,9,0 +BRDA:396,0,10,0 +BRDA:396,0,11,0 +BRDA:398,0,0,1 +BRDA:398,0,1,0 +BRDA:398,0,2,0 +BRDA:398,0,3,1 +BRDA:398,0,4,0 +BRDA:398,0,5,0 +BRDA:398,0,6,0 +BRDA:398,0,7,0 +BRDA:398,0,8,0 +BRDA:398,0,9,0 +BRDA:398,0,10,1 +BRDA:398,0,11,0 +BRDA:401,0,0,1 +BRDA:401,0,1,0 +BRDA:402,0,0,1 +BRDA:402,0,1,0 +BRDA:403,0,0,1 +BRDA:403,0,1,0 +BRDA:405,0,0,1 +BRDA:405,0,1,0 +BRDA:405,0,2,0 +BRDA:405,0,3,1 +BRDA:405,0,4,0 +BRDA:405,0,5,0 +BRDA:405,0,6,0 +BRDA:405,0,7,0 +BRDA:405,0,8,0 +BRDA:405,0,9,0 +BRDA:406,0,0,1 +BRDA:406,0,1,0 +BRDA:410,0,0,1 +BRDA:410,0,1,0 +BRDA:410,0,2,1 +BRDA:410,0,3,0 +BRDA:410,0,4,0 +BRDA:410,0,5,1 +BRDA:410,0,6,0 +BRDA:410,0,7,0 +BRDA:410,0,8,0 +BRDA:410,0,9,0 +BRDA:410,0,10,0 +BRDA:410,0,11,0 +BRDA:410,0,12,0 +BRDA:410,0,13,0 +BRDA:410,0,14,1 +BRDA:410,0,15,0 +BRDA:413,0,0,1 +BRDA:413,0,1,0 +BRDA:413,0,2,1 +BRDA:413,0,3,0 +BRDA:413,0,4,1 +BRDA:413,0,5,0 +BRDA:413,0,6,1 +BRDA:413,0,7,0 +BRDA:413,0,8,1 +BRDA:413,0,9,0 +BRDA:415,0,0,1 +BRDA:415,0,1,0 +BRDA:415,0,2,1 +BRDA:415,0,3,0 +BRDA:415,0,4,0 +BRDA:415,0,5,1 +BRDA:415,0,6,0 +BRDA:415,0,7,0 +BRDA:415,0,8,0 +BRDA:415,0,9,0 +BRDA:415,0,10,0 +BRDA:415,0,11,0 +BRDA:417,0,0,1 +BRDA:417,0,1,0 +BRDA:417,0,2,0 +BRDA:417,0,3,1 +BRDA:417,0,4,0 +BRDA:417,0,5,0 +BRDA:417,0,6,0 +BRDA:417,0,7,0 +BRDA:417,0,8,0 +BRDA:417,0,9,0 +BRDA:420,0,0,1 +BRDA:420,0,1,0 +BRDA:424,0,0,1 +BRDA:424,0,1,0 +BRDA:425,0,0,1 +BRDA:425,0,1,0 +BRDA:426,0,0,1 +BRDA:426,0,1,0 +BRDA:428,0,0,1 +BRDA:428,0,1,0 +BRDA:428,0,2,1 +BRDA:428,0,3,0 +BRDA:428,0,4,1 +BRDA:428,0,5,0 +BRDA:428,0,6,0 +BRDA:428,0,7,1 +BRDA:428,0,8,0 +BRDA:428,0,9,0 +BRDA:428,0,10,0 +BRDA:428,0,11,0 +BRDA:428,0,12,0 +BRDA:428,0,13,0 +BRDA:432,0,0,1 +BRDA:432,0,1,0 +BRDA:438,0,0,1 +BRDA:438,0,1,0 +BRDA:438,0,2,1 +BRDA:438,0,3,0 +BRDA:438,0,4,0 +BRDA:438,0,5,1 +BRDA:438,0,6,0 +BRDA:438,0,7,0 +BRDA:438,0,8,0 +BRDA:438,0,9,0 +BRDA:438,0,10,0 +BRDA:438,0,11,0 +BRDA:438,0,12,0 +BRDA:438,0,13,0 +BRDA:438,0,14,1 +BRDA:438,0,15,0 +BRDA:440,0,0,1 +BRDA:440,0,1,0 +BRDA:440,0,2,1 +BRDA:440,0,3,0 +BRDA:440,0,4,0 +BRDA:440,0,5,1 +BRDA:440,0,6,0 +BRDA:440,0,7,0 +BRDA:440,0,8,0 +BRDA:440,0,9,0 +BRDA:440,0,10,0 +BRDA:440,0,11,0 +BRDA:440,0,12,0 +BRDA:440,0,13,0 +BRDA:440,0,14,1 +BRDA:440,0,15,0 +BRDA:443,0,0,1 +BRDA:443,0,1,0 +BRDA:443,0,2,1 +BRDA:443,0,3,0 +BRDA:444,0,0,1 +BRDA:444,0,1,0 +BRDA:444,0,2,1 +BRDA:444,0,3,0 +BRDA:444,0,4,0 +BRDA:444,0,5,1 +BRDA:444,0,6,0 +BRDA:444,0,7,0 +BRDA:444,0,8,0 +BRDA:444,0,9,0 +BRDA:444,0,10,0 +BRDA:444,0,11,0 +BRDA:444,0,12,0 +BRDA:444,0,13,0 +BRDA:445,0,0,1 +BRDA:445,0,1,0 +BRDA:446,0,0,1 +BRDA:446,0,1,0 +BRDA:446,0,2,1 +BRDA:446,0,3,0 +BRDA:446,0,4,0 +BRDA:446,0,5,1 +BRDA:446,0,6,0 +BRDA:446,0,7,0 +BRDA:446,0,8,0 +BRDA:446,0,9,0 +BRDA:446,0,10,0 +BRDA:446,0,11,0 +BRDA:446,0,12,0 +BRDA:446,0,13,0 +BRDA:447,0,0,1 +BRDA:447,0,1,0 +BRDA:451,0,0,1 +BRDA:451,0,1,0 +BRDA:451,0,2,1 +BRDA:451,0,3,0 +BRDA:451,0,4,1 +BRDA:451,0,5,0 +BRDA:451,0,6,1 +BRDA:451,0,7,0 +BRDA:451,0,8,1 +BRDA:451,0,9,0 +BRDA:455,0,0,1 +BRDA:455,0,1,0 +BRDA:455,0,2,1 +BRDA:455,0,3,0 +BRDA:455,0,4,0 +BRDA:455,0,5,1 +BRDA:455,0,6,0 +BRDA:455,0,7,0 +BRDA:455,0,8,0 +BRDA:455,0,9,0 +BRDA:455,0,10,0 +BRDA:455,0,11,0 +BRDA:457,0,0,1 +BRDA:457,0,1,0 +BRDA:457,0,2,0 +BRDA:457,0,3,1 +BRDA:457,0,4,0 +BRDA:457,0,5,0 +BRDA:457,0,6,0 +BRDA:457,0,7,0 +BRDA:457,0,8,0 +BRDA:457,0,9,0 +BRDA:457,0,10,1 +BRDA:457,0,11,0 +BRDA:460,0,0,1 +BRDA:460,0,1,0 +BRDA:461,0,0,1 +BRDA:461,0,1,0 +BRDA:462,0,0,1 +BRDA:462,0,1,0 +BRDA:464,0,0,1 +BRDA:464,0,1,0 +BRDA:464,0,2,0 +BRDA:464,0,3,1 +BRDA:464,0,4,0 +BRDA:464,0,5,0 +BRDA:464,0,6,0 +BRDA:464,0,7,0 +BRDA:464,0,8,0 +BRDA:464,0,9,0 +BRDA:465,0,0,1 +BRDA:465,0,1,0 +BRDA:469,0,0,1 +BRDA:469,0,1,0 +BRDA:469,0,2,1 +BRDA:469,0,3,0 +BRDA:470,0,0,1 +BRDA:470,0,1,0 +BRDA:470,0,2,1 +BRDA:470,0,3,0 +BRDA:470,0,4,0 +BRDA:470,0,5,1 +BRDA:470,0,6,0 +BRDA:470,0,7,0 +BRDA:470,0,8,0 +BRDA:470,0,9,0 +BRDA:470,0,10,0 +BRDA:470,0,11,0 +BRDA:470,0,12,0 +BRDA:470,0,13,0 +BRDA:471,0,0,1 +BRDA:471,0,1,0 +BRDA:472,0,0,1 +BRDA:472,0,1,0 +BRDA:472,0,2,1 +BRDA:472,0,3,0 +BRDA:472,0,4,0 +BRDA:472,0,5,1 +BRDA:472,0,6,0 +BRDA:472,0,7,0 +BRDA:472,0,8,0 +BRDA:472,0,9,0 +BRDA:472,0,10,0 +BRDA:472,0,11,0 +BRDA:472,0,12,0 +BRDA:472,0,13,0 +BRDA:472,0,14,1 +BRDA:472,0,15,0 +BRDA:476,0,0,1 +BRDA:476,0,1,0 +BRDA:476,0,2,1 +BRDA:476,0,3,0 +BRDA:476,0,4,1 +BRDA:476,0,5,0 +BRDA:476,0,6,1 +BRDA:476,0,7,0 +BRDA:479,0,0,1 +BRDA:479,0,1,0 +BRDA:481,0,0,1 +BRDA:481,0,1,0 +BRDA:481,0,2,1 +BRDA:481,0,3,0 +BRDA:481,0,4,0 +BRDA:481,0,5,1 +BRDA:481,0,6,0 +BRDA:481,0,7,0 +BRDA:481,0,8,0 +BRDA:481,0,9,0 +BRDA:481,0,10,0 +BRDA:481,0,11,0 +BRDA:483,0,0,0 +BRDA:483,0,1,0 +BRDA:483,0,2,1 +BRDA:483,0,3,0 +BRDA:484,0,0,1 +BRDA:484,0,1,0 +BRDA:484,0,2,0 +BRDA:484,0,3,1 +BRDA:484,0,4,0 +BRDA:484,0,5,0 +BRDA:484,0,6,0 +BRDA:484,0,7,0 +BRDA:484,0,8,0 +BRDA:484,0,9,0 +BRDA:484,0,10,1 +BRDA:484,0,11,0 +BRDA:489,0,0,1 +BRDA:489,0,1,0 +BRDA:490,0,0,1 +BRDA:490,0,1,0 +BRDA:491,0,0,1 +BRDA:491,0,1,0 +BRDA:493,0,0,1 +BRDA:493,0,1,0 +BRDA:493,0,2,1 +BRDA:493,0,3,0 +BRDA:493,0,4,1 +BRDA:493,0,5,0 +BRDA:493,0,6,0 +BRDA:493,0,7,1 +BRDA:493,0,8,0 +BRDA:493,0,9,0 +BRDA:493,0,10,0 +BRDA:493,0,11,0 +BRDA:493,0,12,0 +BRDA:493,0,13,0 +BRDA:496,0,0,1 +BRDA:496,0,1,0 +BRDA:500,0,0,1 +BRDA:500,0,1,0 +BRDA:500,0,2,1 +BRDA:500,0,3,0 +BRDA:500,0,4,0 +BRDA:500,0,5,1 +BRDA:500,0,6,0 +BRDA:500,0,7,0 +BRDA:500,0,8,0 +BRDA:500,0,9,0 +BRDA:500,0,10,0 +BRDA:500,0,11,0 +BRDA:500,0,12,0 +BRDA:500,0,13,0 +BRDA:500,0,14,1 +BRDA:500,0,15,0 +BRDA:502,0,0,1 +BRDA:502,0,1,0 +BRDA:502,0,2,1 +BRDA:502,0,3,0 +BRDA:502,0,4,1 +BRDA:502,0,5,0 +BRDA:506,0,0,1 +BRDA:506,0,1,0 +BRDA:506,0,2,1 +BRDA:506,0,3,0 +BRDA:506,0,4,0 +BRDA:506,0,5,1 +BRDA:506,0,6,0 +BRDA:506,0,7,0 +BRDA:506,0,8,0 +BRDA:506,0,9,0 +BRDA:506,0,10,0 +BRDA:506,0,11,0 +BRDA:508,0,0,1 +BRDA:508,0,1,0 +BRDA:508,0,2,0 +BRDA:508,0,3,1 +BRDA:508,0,4,0 +BRDA:508,0,5,0 +BRDA:508,0,6,0 +BRDA:508,0,7,0 +BRDA:508,0,8,0 +BRDA:508,0,9,0 +BRDA:511,0,0,1 +BRDA:511,0,1,0 +BRDA:515,0,0,1 +BRDA:515,0,1,0 +BRDA:516,0,0,1 +BRDA:516,0,1,0 +BRDA:517,0,0,1 +BRDA:517,0,1,0 +BRDA:519,0,0,1 +BRDA:519,0,1,0 +BRDA:519,0,2,1 +BRDA:519,0,3,0 +BRDA:519,0,4,1 +BRDA:519,0,5,0 +BRDA:519,0,6,0 +BRDA:519,0,7,1 +BRDA:519,0,8,0 +BRDA:519,0,9,0 +BRDA:519,0,10,0 +BRDA:519,0,11,0 +BRDA:519,0,12,0 +BRDA:519,0,13,0 +BRDA:521,0,0,1 +BRDA:521,0,1,0 +BRDA:526,0,0,1 +BRDA:526,0,1,0 +BRDA:526,0,2,1 +BRDA:526,0,3,0 +BRDA:526,0,4,0 +BRDA:526,0,5,1 +BRDA:526,0,6,0 +BRDA:526,0,7,0 +BRDA:526,0,8,0 +BRDA:526,0,9,0 +BRDA:526,0,10,0 +BRDA:526,0,11,0 +BRDA:526,0,12,0 +BRDA:526,0,13,0 +BRDA:526,0,14,1 +BRDA:526,0,15,0 +BRDA:529,0,0,1 +BRDA:529,0,1,0 +BRDA:529,0,2,1 +BRDA:529,0,3,0 +BRDA:529,0,4,1 +BRDA:529,0,5,0 +BRDA:529,0,6,1 +BRDA:529,0,7,0 +BRDA:533,0,0,1 +BRDA:533,0,1,0 +BRDA:533,0,2,1 +BRDA:533,0,3,0 +BRDA:533,0,4,0 +BRDA:533,0,5,1 +BRDA:533,0,6,0 +BRDA:533,0,7,0 +BRDA:533,0,8,0 +BRDA:533,0,9,0 +BRDA:533,0,10,0 +BRDA:533,0,11,0 +BRDA:535,0,0,1 +BRDA:535,0,1,0 +BRDA:535,0,2,0 +BRDA:535,0,3,1 +BRDA:535,0,4,0 +BRDA:535,0,5,0 +BRDA:535,0,6,0 +BRDA:535,0,7,0 +BRDA:535,0,8,0 +BRDA:535,0,9,0 +BRDA:535,0,10,1 +BRDA:535,0,11,0 +BRDA:539,0,0,1 +BRDA:539,0,1,0 +BRDA:540,0,0,1 +BRDA:540,0,1,0 +BRDA:541,0,0,1 +BRDA:541,0,1,0 +BRDA:543,0,0,1 +BRDA:543,0,1,0 +BRDA:543,0,2,0 +BRDA:543,0,3,1 +BRDA:543,0,4,0 +BRDA:543,0,5,0 +BRDA:543,0,6,0 +BRDA:543,0,7,0 +BRDA:543,0,8,0 +BRDA:543,0,9,0 +BRDA:544,0,0,1 +BRDA:544,0,1,0 +BRDA:548,0,0,1 +BRDA:548,0,1,0 +BRDA:548,0,2,1 +BRDA:548,0,3,0 +BRDA:548,0,4,0 +BRDA:548,0,5,1 +BRDA:548,0,6,0 +BRDA:548,0,7,0 +BRDA:548,0,8,0 +BRDA:548,0,9,0 +BRDA:548,0,10,0 +BRDA:548,0,11,0 +BRDA:548,0,12,0 +BRDA:548,0,13,0 +BRDA:549,0,0,1 +BRDA:549,0,1,0 +BRDA:552,0,0,1 +BRDA:552,0,1,0 +BRDA:552,0,2,1 +BRDA:552,0,3,0 +BRDA:552,0,4,1 +BRDA:552,0,5,0 +BRDA:552,0,6,1 +BRDA:552,0,7,0 +BRDA:552,0,8,1 +BRDA:552,0,9,0 +BRDA:553,0,0,1 +BRDA:553,0,1,0 +BRDA:553,0,2,1 +BRDA:553,0,3,0 +BRDA:553,0,4,1 +BRDA:553,0,5,0 +BRDA:555,0,0,1 +BRDA:555,0,1,0 +BRDA:555,0,2,1 +BRDA:555,0,3,0 +BRDA:555,0,4,0 +BRDA:555,0,5,1 +BRDA:555,0,6,0 +BRDA:555,0,7,0 +BRDA:555,0,8,0 +BRDA:555,0,9,0 +BRDA:555,0,10,0 +BRDA:555,0,11,0 +BRDA:559,0,0,1 +BRDA:559,0,1,0 +BRDA:560,0,0,1 +BRDA:560,0,1,0 +BRDA:561,0,0,1 +BRDA:561,0,1,0 +BRDA:563,0,0,1 +BRDA:563,0,1,0 +BRDA:563,0,2,1 +BRDA:563,0,3,0 +BRDA:563,0,4,1 +BRDA:563,0,5,0 +BRDA:563,0,6,0 +BRDA:563,0,7,1 +BRDA:563,0,8,0 +BRDA:563,0,9,0 +BRDA:563,0,10,0 +BRDA:563,0,11,0 +BRDA:563,0,12,0 +BRDA:563,0,13,0 +BRDA:566,0,0,1 +BRDA:566,0,1,0 +BRDA:571,0,0,1 +BRDA:571,0,1,0 +BRDA:571,0,2,1 +BRDA:571,0,3,0 +BRDA:571,0,4,0 +BRDA:571,0,5,1 +BRDA:571,0,6,0 +BRDA:571,0,7,0 +BRDA:571,0,8,0 +BRDA:571,0,9,0 +BRDA:571,0,10,0 +BRDA:571,0,11,0 +BRDA:571,0,12,0 +BRDA:571,0,13,0 +BRDA:572,0,0,1 +BRDA:572,0,1,0 +BRDA:574,0,0,1 +BRDA:574,0,1,0 +BRDA:574,0,2,1 +BRDA:574,0,3,0 +BRDA:574,0,4,1 +BRDA:574,0,5,0 +BRDA:575,0,0,1 +BRDA:575,0,1,0 +BRDA:575,0,2,1 +BRDA:575,0,3,0 +BRDA:575,0,4,1 +BRDA:575,0,5,0 +BRDA:577,0,0,1 +BRDA:577,0,1,0 +BRDA:577,0,2,1 +BRDA:577,0,3,0 +BRDA:577,0,4,0 +BRDA:577,0,5,1 +BRDA:577,0,6,0 +BRDA:577,0,7,0 +BRDA:577,0,8,0 +BRDA:577,0,9,0 +BRDA:577,0,10,0 +BRDA:577,0,11,0 +BRDA:578,0,0,1 +BRDA:578,0,1,0 +BRDA:578,0,2,1 +BRDA:578,0,3,0 +BRDA:578,0,4,0 +BRDA:578,0,5,1 +BRDA:578,0,6,0 +BRDA:578,0,7,0 +BRDA:578,0,8,0 +BRDA:578,0,9,0 +BRDA:578,0,10,0 +BRDA:578,0,11,0 +BRDA:582,0,0,1 +BRDA:582,0,1,0 +BRDA:583,0,0,1 +BRDA:583,0,1,0 +BRDA:584,0,0,1 +BRDA:584,0,1,0 +BRDA:586,0,0,1 +BRDA:586,0,1,0 +BRDA:586,0,2,1 +BRDA:586,0,3,0 +BRDA:586,0,4,1 +BRDA:586,0,5,0 +BRDA:586,0,6,0 +BRDA:586,0,7,1 +BRDA:586,0,8,0 +BRDA:586,0,9,0 +BRDA:586,0,10,0 +BRDA:586,0,11,0 +BRDA:586,0,12,0 +BRDA:586,0,13,0 +BRDA:590,0,0,1 +BRDA:590,0,1,0 +BRDA:595,0,0,1 +BRDA:595,0,1,0 +BRDA:595,0,2,1 +BRDA:595,0,3,0 +BRDA:595,0,4,0 +BRDA:595,0,5,1 +BRDA:595,0,6,0 +BRDA:595,0,7,0 +BRDA:595,0,8,0 +BRDA:595,0,9,0 +BRDA:595,0,10,0 +BRDA:595,0,11,0 +BRDA:595,0,12,0 +BRDA:595,0,13,0 +BRDA:596,0,0,1 +BRDA:596,0,1,0 +BRDA:600,0,0,1 +BRDA:600,0,1,0 +BRDA:600,0,2,1 +BRDA:600,0,3,0 +BRDA:601,0,0,1 +BRDA:601,0,1,0 +BRDA:601,0,2,1 +BRDA:601,0,3,0 +BRDA:601,0,4,0 +BRDA:601,0,5,1 +BRDA:601,0,6,0 +BRDA:601,0,7,0 +BRDA:601,0,8,0 +BRDA:601,0,9,0 +BRDA:601,0,10,0 +BRDA:601,0,11,0 +BRDA:601,0,12,0 +BRDA:601,0,13,0 +BRDA:602,0,0,1 +BRDA:602,0,1,0 +BRDA:603,0,0,1 +BRDA:603,0,1,0 +BRDA:603,0,2,1 +BRDA:603,0,3,0 +BRDA:603,0,4,0 +BRDA:603,0,5,1 +BRDA:603,0,6,0 +BRDA:603,0,7,0 +BRDA:603,0,8,0 +BRDA:603,0,9,0 +BRDA:603,0,10,0 +BRDA:603,0,11,0 +BRDA:603,0,12,0 +BRDA:603,0,13,0 +BRDA:604,0,0,1 +BRDA:604,0,1,0 +BRDA:607,0,0,1 +BRDA:607,0,1,0 +BRDA:607,0,2,1 +BRDA:607,0,3,0 +BRDA:607,0,4,1 +BRDA:607,0,5,0 +BRDA:607,0,6,1 +BRDA:607,0,7,0 +BRDA:608,0,0,1 +BRDA:608,0,1,0 +BRDA:608,0,2,1 +BRDA:608,0,3,0 +BRDA:608,0,4,1 +BRDA:608,0,5,0 +BRDA:610,0,0,1 +BRDA:610,0,1,0 +BRDA:610,0,2,1 +BRDA:610,0,3,0 +BRDA:610,0,4,0 +BRDA:610,0,5,1 +BRDA:610,0,6,0 +BRDA:610,0,7,0 +BRDA:610,0,8,0 +BRDA:610,0,9,0 +BRDA:610,0,10,0 +BRDA:610,0,11,0 +BRDA:611,0,0,1 +BRDA:611,0,1,0 +BRDA:611,0,2,1 +BRDA:611,0,3,0 +BRDA:611,0,4,0 +BRDA:611,0,5,1 +BRDA:611,0,6,0 +BRDA:611,0,7,0 +BRDA:611,0,8,0 +BRDA:611,0,9,0 +BRDA:611,0,10,0 +BRDA:611,0,11,0 +BRDA:615,0,0,1 +BRDA:615,0,1,0 +BRDA:616,0,0,1 +BRDA:616,0,1,0 +BRDA:617,0,0,1 +BRDA:617,0,1,0 +BRDA:619,0,0,1 +BRDA:619,0,1,0 +BRDA:619,0,2,1 +BRDA:619,0,3,0 +BRDA:619,0,4,1 +BRDA:619,0,5,0 +BRDA:619,0,6,0 +BRDA:619,0,7,1 +BRDA:619,0,8,0 +BRDA:619,0,9,0 +BRDA:619,0,10,0 +BRDA:619,0,11,0 +BRDA:619,0,12,0 +BRDA:619,0,13,0 +BRDA:625,0,0,1 +BRDA:625,0,1,0 +BRDA:632,0,0,2 +BRDA:632,0,1,0 +BRDA:632,0,2,2 +BRDA:632,0,3,0 +BRDA:633,0,0,2 +BRDA:633,0,1,0 +BRDA:633,0,2,2 +BRDA:633,0,3,0 +BRDA:633,0,4,0 +BRDA:633,0,5,2 +BRDA:633,0,6,0 +BRDA:633,0,7,0 +BRDA:633,0,8,0 +BRDA:633,0,9,0 +BRDA:633,0,10,0 +BRDA:633,0,11,0 +BRDA:633,0,12,0 +BRDA:633,0,13,0 +BRDA:634,0,0,2 +BRDA:634,0,1,0 +BRDA:635,0,0,2 +BRDA:635,0,1,0 +BRDA:635,0,2,2 +BRDA:635,0,3,0 +BRDA:635,0,4,0 +BRDA:635,0,5,2 +BRDA:635,0,6,0 +BRDA:635,0,7,0 +BRDA:635,0,8,0 +BRDA:635,0,9,0 +BRDA:635,0,10,0 +BRDA:635,0,11,0 +BRDA:635,0,12,0 +BRDA:635,0,13,0 +BRDA:638,0,0,2 +BRDA:638,0,1,0 +BRDA:642,0,0,2 +BRDA:642,0,1,0 +BRDA:642,0,2,2 +BRDA:642,0,3,0 +BRDA:642,0,4,2 +BRDA:642,0,5,0 +BRDA:642,0,6,2 +BRDA:642,0,7,0 +BRDA:642,0,8,2 +BRDA:642,0,9,0 +BRDA:642,0,10,0 +BRDA:642,0,11,2 +BRDA:642,0,12,0 +BRDA:642,0,13,0 +BRDA:642,0,14,0 +BRDA:642,0,15,0 +BRDA:642,0,16,0 +BRDA:642,0,17,0 +BRDA:642,0,18,0 +BRDA:642,0,19,0 +BRDA:646,0,0,2 +BRDA:646,0,1,0 +BRDA:648,0,0,2 +BRDA:648,0,1,0 +BRDA:648,0,2,2 +BRDA:648,0,3,0 +BRDA:648,0,4,2 +BRDA:648,0,5,0 +BRDA:649,0,0,2 +BRDA:649,0,1,0 +BRDA:649,0,2,2 +BRDA:649,0,3,0 +BRDA:649,0,4,2 +BRDA:649,0,5,0 +BRDA:651,0,0,2 +BRDA:651,0,1,0 +BRDA:651,0,2,2 +BRDA:651,0,3,0 +BRDA:651,0,4,0 +BRDA:651,0,5,2 +BRDA:651,0,6,0 +BRDA:651,0,7,0 +BRDA:651,0,8,0 +BRDA:651,0,9,0 +BRDA:651,0,10,0 +BRDA:651,0,11,0 +BRDA:652,0,0,2 +BRDA:652,0,1,0 +BRDA:652,0,2,2 +BRDA:652,0,3,0 +BRDA:652,0,4,0 +BRDA:652,0,5,2 +BRDA:652,0,6,0 +BRDA:652,0,7,0 +BRDA:652,0,8,0 +BRDA:652,0,9,0 +BRDA:652,0,10,0 +BRDA:652,0,11,0 +BRDA:656,0,0,2 +BRDA:656,0,1,0 +BRDA:657,0,0,2 +BRDA:657,0,1,0 +BRDA:658,0,0,2 +BRDA:658,0,1,0 +BRDA:660,0,0,2 +BRDA:660,0,1,0 +BRDA:660,0,2,2 +BRDA:660,0,3,0 +BRDA:660,0,4,2 +BRDA:660,0,5,0 +BRDA:660,0,6,0 +BRDA:660,0,7,2 +BRDA:660,0,8,0 +BRDA:660,0,9,0 +BRDA:660,0,10,0 +BRDA:660,0,11,0 +BRDA:660,0,12,0 +BRDA:660,0,13,0 +BRDA:669,0,0,2 +BRDA:669,0,1,0 +BRDA:673,0,0,2 +BRDA:673,0,1,0 +BRDA:673,0,2,2 +BRDA:673,0,3,0 +BRDA:674,0,0,2 +BRDA:674,0,1,0 +BRDA:674,0,2,2 +BRDA:674,0,3,0 +BRDA:674,0,4,0 +BRDA:674,0,5,2 +BRDA:674,0,6,0 +BRDA:674,0,7,0 +BRDA:674,0,8,0 +BRDA:674,0,9,0 +BRDA:674,0,10,0 +BRDA:674,0,11,0 +BRDA:674,0,12,0 +BRDA:674,0,13,0 +BRDA:674,0,14,2 +BRDA:674,0,15,0 +BRDA:678,0,0,2 +BRDA:678,0,1,0 +BRDA:678,0,2,2 +BRDA:678,0,3,0 +BRDA:678,0,4,2 +BRDA:678,0,5,0 +BRDA:678,0,6,2 +BRDA:678,0,7,0 +BRDA:678,0,8,2 +BRDA:678,0,9,0 +BRDA:678,0,10,2 +BRDA:678,0,11,0 +BRDA:678,0,12,2 +BRDA:678,0,13,0 +BRDA:678,0,14,2 +BRDA:678,0,15,0 +BRDA:678,0,16,0 +BRDA:678,0,17,2 +BRDA:678,0,18,0 +BRDA:678,0,19,0 +BRDA:678,0,20,0 +BRDA:678,0,21,0 +BRDA:678,0,22,0 +BRDA:678,0,23,0 +BRDA:678,0,24,0 +BRDA:678,0,25,0 +BRDA:681,0,0,2 +BRDA:681,0,1,0 +BRDA:683,0,0,2 +BRDA:683,0,1,0 +BRDA:683,0,2,2 +BRDA:683,0,3,0 +BRDA:683,0,4,2 +BRDA:683,0,5,0 +BRDA:684,0,0,2 +BRDA:684,0,1,0 +BRDA:684,0,2,2 +BRDA:684,0,3,0 +BRDA:684,0,4,2 +BRDA:684,0,5,0 +BRDA:688,0,0,2 +BRDA:688,0,1,0 +BRDA:693,0,0,2 +BRDA:693,0,1,0 +BRDA:693,0,2,2 +BRDA:693,0,3,0 +BRDA:694,0,0,2 +BRDA:694,0,1,0 +BRDA:694,0,2,2 +BRDA:694,0,3,0 +BRDA:694,0,4,0 +BRDA:694,0,5,2 +BRDA:694,0,6,0 +BRDA:694,0,7,0 +BRDA:694,0,8,0 +BRDA:694,0,9,0 +BRDA:694,0,10,0 +BRDA:694,0,11,0 +BRDA:694,0,12,0 +BRDA:694,0,13,0 +BRDA:694,0,14,2 +BRDA:694,0,15,0 +BRDA:698,0,0,2 +BRDA:698,0,1,0 +BRDA:698,0,2,2 +BRDA:698,0,3,0 +BRDA:698,0,4,2 +BRDA:698,0,5,0 +BRDA:698,0,6,2 +BRDA:698,0,7,0 +BRDA:698,0,8,2 +BRDA:698,0,9,0 +BRDA:698,0,10,2 +BRDA:698,0,11,0 +BRDA:698,0,12,0 +BRDA:698,0,13,2 +BRDA:698,0,14,0 +BRDA:698,0,15,0 +BRDA:698,0,16,0 +BRDA:698,0,17,0 +BRDA:698,0,18,0 +BRDA:698,0,19,0 +BRDA:698,0,20,0 +BRDA:698,0,21,0 +BRDA:702,0,0,2 +BRDA:702,0,1,0 +BRDA:704,0,0,2 +BRDA:704,0,1,0 +BRDA:704,0,2,2 +BRDA:704,0,3,0 +BRDA:704,0,4,2 +BRDA:704,0,5,0 +BRDA:705,0,0,2 +BRDA:705,0,1,0 +BRDA:705,0,2,2 +BRDA:705,0,3,0 +BRDA:705,0,4,2 +BRDA:705,0,5,0 +BRDA:709,0,0,2 +BRDA:709,0,1,0 +BRDA:714,0,0,2 +BRDA:714,0,1,0 +BRDA:714,0,2,2 +BRDA:714,0,3,0 +BRDA:715,0,0,2 +BRDA:715,0,1,0 +BRDA:715,0,2,2 +BRDA:715,0,3,0 +BRDA:715,0,4,0 +BRDA:715,0,5,2 +BRDA:715,0,6,0 +BRDA:715,0,7,0 +BRDA:715,0,8,0 +BRDA:715,0,9,0 +BRDA:715,0,10,0 +BRDA:715,0,11,0 +BRDA:715,0,12,0 +BRDA:715,0,13,0 +BRDA:715,0,14,2 +BRDA:715,0,15,0 +BRDA:719,0,0,2 +BRDA:719,0,1,0 +BRDA:719,0,2,2 +BRDA:719,0,3,0 +BRDA:719,0,4,2 +BRDA:719,0,5,0 +BRDA:719,0,6,2 +BRDA:719,0,7,0 +BRDA:719,0,8,2 +BRDA:719,0,9,0 +BRDA:719,0,10,2 +BRDA:719,0,11,0 +BRDA:719,0,12,0 +BRDA:719,0,13,2 +BRDA:719,0,14,0 +BRDA:719,0,15,0 +BRDA:719,0,16,0 +BRDA:719,0,17,0 +BRDA:719,0,18,0 +BRDA:719,0,19,0 +BRDA:719,0,20,0 +BRDA:719,0,21,0 +BRDA:723,0,0,2 +BRDA:723,0,1,0 +BRDA:725,0,0,2 +BRDA:725,0,1,0 +BRDA:725,0,2,2 +BRDA:725,0,3,0 +BRDA:725,0,4,2 +BRDA:725,0,5,0 +BRDA:726,0,0,2 +BRDA:726,0,1,0 +BRDA:726,0,2,2 +BRDA:726,0,3,0 +BRDA:726,0,4,2 +BRDA:726,0,5,0 +BRDA:730,0,0,2 +BRDA:730,0,1,0 +BRDA:734,0,0,2 +BRDA:734,0,1,0 +BRDA:734,0,2,2 +BRDA:734,0,3,0 +BRDA:735,0,0,2 +BRDA:735,0,1,0 +BRDA:735,0,2,2 +BRDA:735,0,3,0 +BRDA:735,0,4,0 +BRDA:735,0,5,2 +BRDA:735,0,6,0 +BRDA:735,0,7,0 +BRDA:735,0,8,0 +BRDA:735,0,9,0 +BRDA:735,0,10,0 +BRDA:735,0,11,0 +BRDA:735,0,12,0 +BRDA:735,0,13,0 +BRDA:735,0,14,2 +BRDA:735,0,15,0 +BRDA:738,0,0,2 +BRDA:738,0,1,0 +BRDA:738,0,2,2 +BRDA:738,0,3,0 +BRDA:739,0,0,2 +BRDA:739,0,1,0 +BRDA:739,0,2,2 +BRDA:739,0,3,0 +BRDA:739,0,4,2 +BRDA:739,0,5,0 +BRDA:739,0,6,0 +BRDA:739,0,7,2 +BRDA:739,0,8,0 +BRDA:739,0,9,0 +BRDA:739,0,10,0 +BRDA:739,0,11,0 +BRDA:739,0,12,0 +BRDA:739,0,13,0 +BRDA:739,0,14,0 +BRDA:739,0,15,0 +BRDA:741,0,0,2 +BRDA:741,0,1,0 +BRDA:744,0,0,2 +BRDA:744,0,1,0 +BRDA:744,0,2,2 +BRDA:744,0,3,0 +BRDA:745,0,0,2 +BRDA:745,0,1,0 +BRDA:745,0,2,2 +BRDA:745,0,3,0 +BRDA:745,0,4,2 +BRDA:745,0,5,0 +BRDA:745,0,6,0 +BRDA:745,0,7,2 +BRDA:745,0,8,0 +BRDA:745,0,9,0 +BRDA:745,0,10,0 +BRDA:745,0,11,0 +BRDA:745,0,12,0 +BRDA:745,0,13,0 +BRDA:745,0,14,0 +BRDA:745,0,15,0 +BRDA:747,0,0,2 +BRDA:747,0,1,0 +BRDA:751,0,0,2 +BRDA:751,0,1,0 +BRDA:751,0,2,2 +BRDA:751,0,3,0 +BRDA:751,0,4,2 +BRDA:751,0,5,0 +BRDA:751,0,6,2 +BRDA:751,0,7,0 +BRDA:751,0,8,2 +BRDA:751,0,9,0 +BRDA:751,0,10,2 +BRDA:751,0,11,0 +BRDA:751,0,12,2 +BRDA:751,0,13,0 +BRDA:751,0,14,2 +BRDA:751,0,15,0 +BRDA:751,0,16,0 +BRDA:751,0,17,2 +BRDA:751,0,18,0 +BRDA:751,0,19,0 +BRDA:751,0,20,0 +BRDA:751,0,21,0 +BRDA:751,0,22,0 +BRDA:751,0,23,0 +BRDA:751,0,24,0 +BRDA:751,0,25,0 +BRDA:754,0,0,2 +BRDA:754,0,1,0 +BRDA:756,0,0,2 +BRDA:756,0,1,0 +BRDA:756,0,2,2 +BRDA:756,0,3,0 +BRDA:756,0,4,2 +BRDA:756,0,5,0 +BRDA:757,0,0,2 +BRDA:757,0,1,0 +BRDA:757,0,2,2 +BRDA:757,0,3,0 +BRDA:757,0,4,2 +BRDA:757,0,5,0 +BRDA:761,0,0,2 +BRDA:761,0,1,0 +BRDA:766,0,0,2 +BRDA:766,0,1,0 +BRDA:766,0,2,2 +BRDA:766,0,3,0 +BRDA:767,0,0,2 +BRDA:767,0,1,0 +BRDA:767,0,2,2 +BRDA:767,0,3,0 +BRDA:767,0,4,0 +BRDA:767,0,5,2 +BRDA:767,0,6,0 +BRDA:767,0,7,0 +BRDA:767,0,8,0 +BRDA:767,0,9,0 +BRDA:767,0,10,0 +BRDA:767,0,11,0 +BRDA:767,0,12,0 +BRDA:767,0,13,0 +BRDA:767,0,14,2 +BRDA:767,0,15,0 +BRDA:771,0,0,2 +BRDA:771,0,1,0 +BRDA:771,0,2,2 +BRDA:771,0,3,0 +BRDA:771,0,4,2 +BRDA:771,0,5,0 +BRDA:771,0,6,0 +BRDA:771,0,7,2 +BRDA:771,0,8,0 +BRDA:771,0,9,0 +BRDA:771,0,10,0 +BRDA:771,0,11,0 +BRDA:771,0,12,0 +BRDA:771,0,13,0 +BRDA:771,0,14,0 +BRDA:771,0,15,0 +BRDA:774,0,0,2 +BRDA:774,0,1,0 +BRDA:777,0,0,2 +BRDA:777,0,1,0 +BRDA:777,0,2,2 +BRDA:777,0,3,0 +BRDA:777,0,4,2 +BRDA:777,0,5,0 +BRDA:777,0,6,2 +BRDA:777,0,7,0 +BRDA:778,0,0,2 +BRDA:778,0,1,0 +BRDA:778,0,2,2 +BRDA:778,0,3,0 +BRDA:778,0,4,2 +BRDA:778,0,5,0 +BRDA:784,0,0,2 +BRDA:784,0,1,0 +BRDA:789,0,0,1 +BRDA:789,0,1,0 +BRDA:789,0,2,1 +BRDA:789,0,3,0 +BRDA:791,0,0,1 +BRDA:791,0,1,0 +BRDA:791,0,2,1 +BRDA:791,0,3,0 +BRDA:791,0,4,0 +BRDA:791,0,5,1 +BRDA:791,0,6,0 +BRDA:791,0,7,0 +BRDA:791,0,8,0 +BRDA:791,0,9,0 +BRDA:791,0,10,0 +BRDA:791,0,11,0 +BRDA:791,0,12,0 +BRDA:791,0,13,0 +BRDA:792,0,0,1 +BRDA:792,0,1,0 +BRDA:794,0,0,1 +BRDA:794,0,1,0 +BRDA:794,0,2,1 +BRDA:794,0,3,0 +BRDA:794,0,4,1 +BRDA:794,0,5,0 +BRDA:795,0,0,1 +BRDA:795,0,1,0 +BRDA:795,0,2,1 +BRDA:795,0,3,0 +BRDA:795,0,4,1 +BRDA:795,0,5,0 +BRDA:798,0,0,1 +BRDA:798,0,1,0 +BRDA:798,0,2,1 +BRDA:798,0,3,0 +BRDA:802,0,0,1 +BRDA:802,0,1,0 +BRDA:802,0,2,1 +BRDA:802,0,3,0 +BRDA:804,0,0,1 +BRDA:804,0,1,0 +BRDA:804,0,2,1 +BRDA:804,0,3,0 +BRDA:804,0,4,0 +BRDA:804,0,5,1 +BRDA:804,0,6,0 +BRDA:804,0,7,0 +BRDA:804,0,8,0 +BRDA:804,0,9,0 +BRDA:804,0,10,0 +BRDA:804,0,11,0 +BRDA:804,0,12,0 +BRDA:804,0,13,0 +BRDA:805,0,0,1 +BRDA:805,0,1,0 +BRDA:807,0,0,1 +BRDA:807,0,1,0 +BRDA:807,0,2,1 +BRDA:807,0,3,0 +BRDA:807,0,4,1 +BRDA:807,0,5,0 +BRDA:808,0,0,1 +BRDA:808,0,1,0 +BRDA:808,0,2,1 +BRDA:808,0,3,0 +BRDA:808,0,4,1 +BRDA:808,0,5,0 +BRDA:809,0,0,1 +BRDA:809,0,1,0 +BRDA:809,0,2,1 +BRDA:809,0,3,0 +BRDA:818,0,0,1 +BRDA:818,0,1,0 +BRDA:818,0,2,1 +BRDA:818,0,3,0 +BRDA:819,0,0,1 +BRDA:819,0,1,0 +BRDA:819,0,2,1 +BRDA:819,0,3,0 +BRDA:819,0,4,0 +BRDA:819,0,5,1 +BRDA:819,0,6,0 +BRDA:819,0,7,0 +BRDA:819,0,8,0 +BRDA:819,0,9,0 +BRDA:819,0,10,0 +BRDA:819,0,11,0 +BRDA:819,0,12,0 +BRDA:819,0,13,0 +BRDA:820,0,0,1 +BRDA:820,0,1,0 +BRDA:822,0,0,1 +BRDA:822,0,1,0 +BRDA:822,0,2,1 +BRDA:822,0,3,0 +BRDA:822,0,4,0 +BRDA:822,0,5,1 +BRDA:822,0,6,0 +BRDA:822,0,7,0 +BRDA:822,0,8,0 +BRDA:822,0,9,0 +BRDA:822,0,10,0 +BRDA:822,0,11,0 +BRDA:822,0,12,0 +BRDA:822,0,13,0 +BRDA:823,0,0,1 +BRDA:823,0,1,0 +BRDA:825,0,0,1 +BRDA:825,0,1,0 +BRDA:825,0,2,1 +BRDA:825,0,3,0 +BRDA:825,0,4,1 +BRDA:825,0,5,0 +BRDA:826,0,0,1 +BRDA:826,0,1,0 +BRDA:826,0,2,1 +BRDA:826,0,3,0 +BRDA:826,0,4,1 +BRDA:826,0,5,0 +BRDA:827,0,0,1 +BRDA:827,0,1,0 +BRDA:842,0,0,1 +BRDA:842,0,1,0 +BRDA:842,0,2,1 +BRDA:842,0,3,0 +BRDA:846,0,0,1 +BRDA:846,0,1,0 +BRDA:846,0,2,1 +BRDA:846,0,3,0 +BRDA:850,0,0,1 +BRDA:850,0,1,0 +BRDA:850,0,2,1 +BRDA:850,0,3,0 +BRDA:854,0,0,1 +BRDA:854,0,1,0 +BRDA:854,0,2,1 +BRDA:854,0,3,0 +BRDA:859,0,0,1 +BRDA:859,0,1,0 +BRDA:859,0,2,1 +BRDA:859,0,3,0 +BRDA:864,0,0,1 +BRDA:864,0,1,0 +BRDA:864,0,2,1 +BRDA:864,0,3,0 +BRDA:868,0,0,1 +BRDA:868,0,1,0 +BRDA:868,0,2,1 +BRDA:868,0,3,0 +BRDA:872,0,0,1 +BRDA:872,0,1,0 +BRDA:872,0,2,1 +BRDA:872,0,3,0 +BRDA:880,0,0,1 +BRDA:880,0,1,0 +BRDA:880,0,2,1 +BRDA:880,0,3,0 +BRDA:881,0,0,1 +BRDA:881,0,1,0 +BRDA:881,0,2,1 +BRDA:881,0,3,0 +BRDA:881,0,4,0 +BRDA:881,0,5,1 +BRDA:881,0,6,0 +BRDA:881,0,7,0 +BRDA:881,0,8,0 +BRDA:881,0,9,0 +BRDA:881,0,10,0 +BRDA:881,0,11,0 +BRDA:881,0,12,0 +BRDA:881,0,13,0 +BRDA:881,0,14,1 +BRDA:881,0,15,0 +BRDA:883,0,0,1 +BRDA:883,0,1,0 +BRDA:883,0,2,1 +BRDA:883,0,3,0 +BRDA:883,0,4,1 +BRDA:883,0,5,0 +BRDA:883,0,6,0 +BRDA:883,0,7,1 +BRDA:883,0,8,0 +BRDA:883,0,9,0 +BRDA:883,0,10,0 +BRDA:883,0,11,0 +BRDA:883,0,12,0 +BRDA:883,0,13,0 +BRDA:883,0,14,0 +BRDA:883,0,15,0 +BRDA:884,0,0,1 +BRDA:884,0,1,0 +BRDA:888,0,0,1 +BRDA:888,0,1,0 +BRDA:888,0,2,1 +BRDA:888,0,3,0 +BRDA:888,0,4,1 +BRDA:888,0,5,0 +BRDA:888,0,6,0 +BRDA:888,0,7,1 +BRDA:888,0,8,0 +BRDA:888,0,9,0 +BRDA:888,0,10,0 +BRDA:888,0,11,0 +BRDA:888,0,12,0 +BRDA:888,0,13,0 +BRDA:888,0,14,0 +BRDA:888,0,15,0 +BRDA:891,0,0,1 +BRDA:891,0,1,0 +BRDA:893,0,0,1 +BRDA:893,0,1,0 +BRDA:893,0,2,1 +BRDA:893,0,3,0 +BRDA:893,0,4,1 +BRDA:893,0,5,0 +BRDA:894,0,0,1 +BRDA:894,0,1,0 +BRDA:894,0,2,1 +BRDA:894,0,3,0 +BRDA:894,0,4,1 +BRDA:894,0,5,0 +BRDA:898,0,0,1 +BRDA:898,0,1,0 +BRDA:902,0,0,1 +BRDA:902,0,1,0 +BRDA:902,0,2,1 +BRDA:902,0,3,0 +BRDA:906,0,0,1 +BRDA:906,0,1,0 +BRDA:906,0,2,1 +BRDA:906,0,3,0 +BRDA:910,0,0,1 +BRDA:910,0,1,0 +BRDA:910,0,2,1 +BRDA:910,0,3,0 +BRDA:914,0,0,1 +BRDA:914,0,1,0 +BRDA:914,0,2,1 +BRDA:914,0,3,0 +BRDA:923,0,0,1 +BRDA:923,0,1,0 +BRDA:923,0,2,1 +BRDA:923,0,3,0 +BRDA:923,0,4,0 +BRDA:923,0,5,1 +BRDA:923,0,6,0 +BRDA:923,0,7,0 +BRDA:923,0,8,0 +BRDA:923,0,9,0 +BRDA:923,0,10,0 +BRDA:923,0,11,0 +BRDA:923,0,12,0 +BRDA:923,0,13,0 +BRDA:923,0,14,1 +BRDA:923,0,15,0 +BRDA:927,0,0,1 +BRDA:927,0,1,0 +BRDA:927,0,2,1 +BRDA:927,0,3,0 +BRDA:927,0,4,0 +BRDA:927,0,5,1 +BRDA:927,0,6,0 +BRDA:927,0,7,0 +BRDA:927,0,8,0 +BRDA:927,0,9,0 +BRDA:927,0,10,0 +BRDA:927,0,11,0 +BRDA:927,0,12,0 +BRDA:927,0,13,0 +BRDA:927,0,14,1 +BRDA:927,0,15,0 +BRDA:929,0,0,1 +BRDA:929,0,1,0 +BRDA:929,0,2,1 +BRDA:929,0,3,0 +BRDA:929,0,4,1 +BRDA:929,0,5,0 +BRDA:930,0,0,1 +BRDA:930,0,1,0 +BRDA:930,0,2,1 +BRDA:930,0,3,0 +BRDA:930,0,4,1 +BRDA:930,0,5,0 +BRDA:934,0,0,1 +BRDA:934,0,1,0 +BRDA:938,0,0,1 +BRDA:938,0,1,0 +BRDA:938,0,2,1 +BRDA:938,0,3,0 +BRDA:938,0,4,0 +BRDA:938,0,5,1 +BRDA:938,0,6,0 +BRDA:938,0,7,0 +BRDA:938,0,8,0 +BRDA:938,0,9,0 +BRDA:938,0,10,0 +BRDA:938,0,11,0 +BRDA:938,0,12,0 +BRDA:938,0,13,0 +BRDA:938,0,14,1 +BRDA:938,0,15,0 +BRDA:942,0,0,1 +BRDA:942,0,1,0 +BRDA:942,0,2,1 +BRDA:942,0,3,0 +BRDA:942,0,4,0 +BRDA:942,0,5,1 +BRDA:942,0,6,0 +BRDA:942,0,7,0 +BRDA:942,0,8,0 +BRDA:942,0,9,0 +BRDA:942,0,10,0 +BRDA:942,0,11,0 +BRDA:942,0,12,0 +BRDA:942,0,13,0 +BRDA:942,0,14,1 +BRDA:942,0,15,0 +BRDA:944,0,0,1 +BRDA:944,0,1,0 +BRDA:944,0,2,1 +BRDA:944,0,3,0 +BRDA:944,0,4,1 +BRDA:944,0,5,0 +BRDA:945,0,0,1 +BRDA:945,0,1,0 +BRDA:945,0,2,1 +BRDA:945,0,3,0 +BRDA:945,0,4,1 +BRDA:945,0,5,0 +BRDA:950,0,0,1 +BRDA:950,0,1,0 +BRF:2582 +BRH:844 +DA:54,24 +DA:55,16 +DA:56,16 +DA:61,34 +DA:62,34 +DA:64,34 +DA:65,34 +DA:66,102 +DA:67,68 +DA:68,34 +DA:69,68 +DA:71,34 +DA:72,34 +DA:73,34 +DA:74,34 +DA:75,34 +DA:79,34 +DA:92,34 +DA:93,68 +DA:94,34 +DA:95,68 +DA:96,34 +DA:97,34 +DA:100,34 +DA:105,34 +DA:106,34 +DA:107,88 +DA:108,54 +DA:110,34 +DA:111,96 +DA:112,62 +DA:114,34 +DA:115,100 +DA:116,66 +DA:118,34 +DA:119,101 +DA:120,67 +DA:122,34 +DA:124,8 +DA:127,16 +DA:129,8 +DA:130,8 +DA:131,8 +DA:133,0 +DA:134,8 +DA:136,30 +DA:139,60 +DA:140,30 +DA:141,30 +DA:142,30 +DA:144,0 +DA:145,30 +DA:147,4 +DA:149,8 +DA:150,4 +DA:151,4 +DA:152,4 +DA:154,0 +DA:155,4 +DA:157,1 +DA:159,2 +DA:161,2 +DA:162,2 +DA:163,1 +DA:164,1 +DA:165,1 +DA:167,0 +DA:168,1 +DA:170,1 +DA:173,2 +DA:174,1 +DA:175,1 +DA:176,1 +DA:178,0 +DA:179,1 +DA:193,4 +DA:194,1 +DA:195,1 +DA:196,1 +DA:197,1 +DA:198,1 +DA:199,1 +DA:201,3 +DA:202,2 +DA:203,2 +DA:205,1 +DA:206,1 +DA:207,1 +DA:208,1 +DA:212,2 +DA:215,1 +DA:216,1 +DA:218,4 +DA:219,1 +DA:220,1 +DA:221,1 +DA:222,1 +DA:223,1 +DA:224,1 +DA:227,5 +DA:228,2 +DA:229,2 +DA:231,1 +DA:232,1 +DA:233,1 +DA:234,1 +DA:236,2 +DA:238,1 +DA:239,1 +DA:241,4 +DA:242,1 +DA:243,1 +DA:244,1 +DA:245,1 +DA:246,1 +DA:247,1 +DA:250,5 +DA:251,2 +DA:252,2 +DA:254,1 +DA:255,1 +DA:256,1 +DA:257,1 +DA:259,2 +DA:261,1 +DA:262,1 +DA:264,4 +DA:266,1 +DA:267,1 +DA:268,1 +DA:269,1 +DA:270,1 +DA:271,1 +DA:274,1 +DA:275,7 +DA:276,2 +DA:277,2 +DA:279,1 +DA:280,1 +DA:281,1 +DA:282,1 +DA:284,1 +DA:285,1 +DA:287,4 +DA:288,1 +DA:289,1 +DA:290,1 +DA:291,1 +DA:293,3 +DA:294,2 +DA:295,2 +DA:297,1 +DA:299,1 +DA:300,1 +DA:301,2 +DA:303,1 +DA:304,1 +DA:308,2 +DA:309,1 +DA:310,2 +DA:311,2 +DA:312,1 +DA:314,4 +DA:316,2 +DA:317,1 +DA:318,1 +DA:319,1 +DA:322,1 +DA:323,4 +DA:324,1 +DA:325,1 +DA:327,1 +DA:328,1 +DA:329,1 +DA:330,1 +DA:334,1 +DA:335,1 +DA:336,2 +DA:337,1 +DA:338,1 +DA:340,4 +DA:342,1 +DA:345,7 +DA:346,1 +DA:347,1 +DA:349,1 +DA:350,1 +DA:352,1 +DA:353,1 +DA:355,1 +DA:356,1 +DA:357,1 +DA:361,21 +DA:366,21 +DA:367,21 +DA:369,21 +DA:370,21 +DA:372,21 +DA:373,42 +DA:374,42 +DA:375,21 +DA:378,4 +DA:381,1 +DA:382,1 +DA:383,1 +DA:384,1 +DA:386,2 +DA:387,1 +DA:388,1 +DA:389,1 +DA:391,1 +DA:392,6 +DA:395,1 +DA:396,1 +DA:397,1 +DA:398,1 +DA:401,1 +DA:402,1 +DA:403,2 +DA:405,1 +DA:406,1 +DA:408,4 +DA:409,1 +DA:410,1 +DA:412,1 +DA:413,7 +DA:414,1 +DA:415,1 +DA:416,1 +DA:417,1 +DA:420,1 +DA:424,1 +DA:425,1 +DA:426,2 +DA:428,2 +DA:431,1 +DA:432,1 +DA:434,4 +DA:437,1 +DA:438,1 +DA:439,1 +DA:440,1 +DA:443,2 +DA:444,1 +DA:445,1 +DA:446,1 +DA:447,1 +DA:449,1 +DA:451,7 +DA:454,1 +DA:455,1 +DA:456,1 +DA:457,1 +DA:460,1 +DA:461,1 +DA:462,2 +DA:464,1 +DA:465,1 +DA:467,4 +DA:469,2 +DA:470,1 +DA:471,1 +DA:472,1 +DA:474,1 +DA:476,6 +DA:479,1 +DA:480,1 +DA:481,1 +DA:483,1 +DA:484,1 +DA:489,1 +DA:490,1 +DA:491,2 +DA:493,2 +DA:495,1 +DA:496,1 +DA:498,4 +DA:499,1 +DA:500,1 +DA:502,5 +DA:505,1 +DA:506,1 +DA:507,1 +DA:508,1 +DA:511,1 +DA:515,1 +DA:516,1 +DA:517,2 +DA:519,2 +DA:520,1 +DA:521,1 +DA:523,4 +DA:525,1 +DA:526,1 +DA:528,1 +DA:529,6 +DA:532,1 +DA:533,1 +DA:534,1 +DA:535,1 +DA:539,1 +DA:540,1 +DA:541,2 +DA:543,1 +DA:544,1 +DA:546,4 +DA:547,1 +DA:548,1 +DA:549,1 +DA:552,8 +DA:553,1 +DA:555,1 +DA:559,1 +DA:560,1 +DA:561,2 +DA:563,2 +DA:565,1 +DA:566,1 +DA:568,4 +DA:570,1 +DA:571,1 +DA:572,1 +DA:574,6 +DA:575,1 +DA:577,1 +DA:578,1 +DA:582,1 +DA:583,1 +DA:584,2 +DA:586,2 +DA:589,1 +DA:590,1 +DA:592,4 +DA:594,1 +DA:595,1 +DA:596,1 +DA:600,2 +DA:601,1 +DA:602,1 +DA:603,1 +DA:604,1 +DA:607,7 +DA:608,1 +DA:610,1 +DA:611,1 +DA:615,1 +DA:616,1 +DA:617,2 +DA:619,2 +DA:624,1 +DA:625,1 +DA:629,2 +DA:632,4 +DA:633,2 +DA:634,2 +DA:635,2 +DA:638,2 +DA:641,2 +DA:642,2 +DA:646,2 +DA:648,12 +DA:649,2 +DA:651,2 +DA:652,2 +DA:656,2 +DA:657,2 +DA:658,4 +DA:660,4 +DA:668,2 +DA:669,2 +DA:671,2 +DA:673,4 +DA:674,2 +DA:677,2 +DA:678,2 +DA:681,2 +DA:683,10 +DA:684,2 +DA:688,2 +DA:690,2 +DA:693,4 +DA:694,2 +DA:697,2 +DA:698,2 +DA:702,2 +DA:704,10 +DA:705,2 +DA:709,2 +DA:711,2 +DA:714,4 +DA:715,2 +DA:718,2 +DA:719,2 +DA:723,2 +DA:725,10 +DA:726,2 +DA:730,2 +DA:732,2 +DA:734,4 +DA:735,2 +DA:738,4 +DA:739,2 +DA:741,2 +DA:744,4 +DA:745,2 +DA:747,2 +DA:750,2 +DA:751,2 +DA:754,2 +DA:756,10 +DA:757,2 +DA:761,2 +DA:763,2 +DA:766,4 +DA:767,2 +DA:770,2 +DA:771,2 +DA:774,2 +DA:777,12 +DA:778,2 +DA:784,2 +DA:787,4 +DA:789,2 +DA:790,1 +DA:791,1 +DA:792,1 +DA:794,5 +DA:795,1 +DA:798,1 +DA:800,4 +DA:802,2 +DA:803,1 +DA:804,1 +DA:805,1 +DA:807,5 +DA:808,1 +DA:809,1 +DA:816,4 +DA:818,2 +DA:819,1 +DA:820,1 +DA:821,1 +DA:822,1 +DA:823,1 +DA:825,5 +DA:826,1 +DA:827,1 +DA:841,4 +DA:842,1 +DA:843,1 +DA:845,4 +DA:846,1 +DA:847,1 +DA:849,4 +DA:850,1 +DA:851,1 +DA:853,4 +DA:854,1 +DA:855,1 +DA:857,4 +DA:859,1 +DA:860,1 +DA:862,4 +DA:864,1 +DA:865,1 +DA:867,4 +DA:868,1 +DA:869,1 +DA:871,4 +DA:872,1 +DA:873,1 +DA:877,4 +DA:880,2 +DA:881,1 +DA:883,1 +DA:884,1 +DA:887,1 +DA:888,1 +DA:891,1 +DA:893,5 +DA:894,1 +DA:898,1 +DA:901,4 +DA:902,1 +DA:903,1 +DA:905,4 +DA:906,1 +DA:907,1 +DA:909,4 +DA:910,1 +DA:911,1 +DA:913,4 +DA:914,1 +DA:915,1 +DA:921,4 +DA:922,1 +DA:923,1 +DA:926,1 +DA:927,1 +DA:929,5 +DA:930,1 +DA:934,1 +DA:936,4 +DA:937,1 +DA:938,1 +DA:941,1 +DA:942,1 +DA:944,5 +DA:945,1 +DA:950,1 +LH:505 +LF:510 +end_of_record diff --git a/test/lcov/go.lcov b/test/lcov/go.lcov new file mode 100644 index 00000000..1fce0e2c --- /dev/null +++ b/test/lcov/go.lcov @@ -0,0 +1,1184 @@ +SF:config/azblob.go +FNF:0 +FNH:0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:48,0 +DA:49,0 +DA:50,0 +DA:51,0 +DA:52,0 +DA:53,0 +DA:54,0 +DA:56,0 +DA:59,0 +DA:60,0 +DA:61,0 +DA:62,0 +DA:63,0 +DA:64,0 +DA:65,0 +DA:67,0 +DA:68,0 +DA:71,0 +DA:72,0 +DA:73,0 +DA:74,0 +DA:76,0 +LH:0 +LF:41 +end_of_record +SF:config/config.go +FNF:0 +FNH:0 +DA:41,1 +DA:42,1 +DA:43,1 +DA:44,1 +DA:45,1 +DA:46,1 +DA:47,1 +DA:48,1 +DA:49,1 +DA:50,1 +DA:51,0 +DA:52,0 +DA:53,1 +DA:54,1 +DA:55,0 +DA:56,0 +DA:57,1 +DA:58,1 +DA:61,1 +DA:62,1 +DA:63,0 +DA:64,0 +DA:65,1 +DA:66,0 +DA:67,0 +DA:68,1 +DA:69,0 +DA:70,0 +DA:71,0 +DA:72,0 +DA:73,0 +DA:74,0 +DA:76,1 +DA:77,0 +DA:78,0 +DA:79,1 +DA:172,0 +DA:173,0 +DA:174,0 +DA:175,0 +DA:176,0 +DA:177,0 +DA:178,0 +DA:179,0 +DA:180,0 +DA:181,0 +DA:182,0 +DA:183,0 +DA:184,0 +DA:185,0 +DA:186,0 +DA:187,0 +DA:188,0 +DA:189,0 +DA:190,0 +DA:191,0 +DA:192,0 +DA:193,0 +DA:194,0 +DA:195,0 +DA:196,0 +DA:197,0 +DA:198,0 +DA:199,0 +DA:200,0 +DA:201,0 +DA:202,0 +DA:203,0 +DA:204,0 +DA:205,0 +DA:206,0 +DA:207,0 +DA:208,0 +DA:209,0 +DA:210,0 +DA:211,0 +DA:212,0 +DA:213,0 +DA:214,0 +DA:220,0 +DA:221,0 +DA:222,0 +DA:223,0 +DA:224,0 +DA:225,0 +DA:226,0 +DA:227,0 +DA:228,0 +DA:229,0 +DA:230,0 +DA:232,0 +DA:235,1 +DA:236,1 +DA:237,1 +DA:238,1 +DA:239,1 +DA:240,1 +DA:241,1 +DA:242,1 +DA:243,1 +DA:244,1 +DA:245,1 +DA:246,1 +DA:247,1 +DA:248,1 +DA:249,1 +DA:250,1 +DA:251,1 +DA:252,1 +DA:253,0 +DA:254,0 +DA:255,1 +DA:256,1 +DA:257,1 +DA:258,1 +DA:259,1 +DA:261,1 +DA:262,1 +DA:263,1 +DA:265,1 +DA:266,0 +DA:267,0 +DA:269,1 +DA:270,1 +DA:271,1 +DA:273,1 +DA:274,1 +DA:275,1 +DA:276,1 +DA:278,1 +DA:281,1 +DA:282,1 +DA:283,1 +DA:284,1 +DA:286,1 +DA:287,1 +DA:288,1 +DA:290,1 +DA:291,1 +DA:292,1 +DA:293,1 +DA:294,0 +DA:295,0 +DA:297,1 +DA:298,1 +DA:299,1 +DA:300,1 +DA:301,1 +DA:302,1 +DA:303,1 +DA:304,1 +DA:305,1 +DA:306,1 +DA:307,1 +DA:308,0 +DA:309,0 +DA:310,1 +DA:311,0 +DA:312,0 +DA:314,1 +DA:315,0 +DA:316,0 +DA:318,1 +DA:319,1 +DA:320,1 +DA:321,1 +DA:322,1 +DA:323,1 +DA:324,1 +DA:325,1 +DA:326,1 +DA:327,0 +DA:328,0 +DA:331,1 +DA:332,1 +DA:333,1 +DA:334,0 +DA:335,0 +DA:336,1 +DA:337,1 +DA:338,1 +DA:339,0 +DA:340,0 +DA:342,1 +DA:343,1 +DA:344,1 +DA:348,1 +DA:349,1 +DA:350,0 +DA:351,0 +DA:352,0 +DA:356,1 +DA:357,0 +DA:358,0 +DA:360,1 +DA:361,0 +DA:362,0 +DA:363,0 +DA:365,1 +DA:366,0 +DA:367,0 +DA:368,0 +DA:369,0 +DA:371,1 +DA:372,0 +DA:373,0 +DA:375,1 +DA:376,0 +DA:377,0 +DA:379,1 +DA:380,0 +DA:381,0 +DA:383,1 +DA:384,0 +DA:385,0 +DA:387,1 +DA:388,1 +DA:389,0 +DA:390,0 +DA:393,1 +DA:394,1 +DA:395,0 +DA:396,0 +DA:399,1 +DA:400,0 +DA:401,0 +DA:402,0 +DA:405,1 +DA:406,1 +DA:407,0 +DA:408,0 +DA:410,1 +DA:411,0 +DA:412,0 +DA:414,1 +DA:415,1 +DA:416,0 +DA:417,0 +DA:418,0 +DA:420,1 +DA:421,1 +DA:422,1 +DA:423,0 +DA:424,0 +DA:425,0 +DA:428,1 +DA:429,0 +DA:430,0 +DA:431,0 +DA:433,0 +DA:434,0 +DA:435,0 +DA:437,0 +DA:438,0 +DA:439,0 +DA:442,1 +DA:443,1 +DA:444,1 +DA:445,1 +DA:446,1 +DA:447,1 +DA:448,1 +DA:449,1 +DA:453,1 +DA:454,1 +DA:455,0 +DA:456,0 +DA:459,1 +DA:460,1 +DA:461,0 +DA:462,0 +DA:465,1 +DA:468,0 +DA:469,0 +DA:470,0 +DA:471,0 +DA:472,0 +DA:473,0 +DA:477,0 +DA:478,0 +DA:479,0 +DA:480,0 +DA:482,0 +DA:483,0 +DA:484,0 +DA:485,0 +DA:487,0 +DA:488,0 +DA:489,0 +DA:490,0 +DA:492,0 +DA:496,0 +DA:497,0 +DA:498,0 +DA:499,0 +DA:500,0 +DA:502,0 +DA:503,0 +DA:504,0 +DA:505,0 +DA:507,0 +DA:508,0 +DA:509,0 +DA:510,0 +DA:512,0 +DA:513,0 +DA:514,0 +DA:515,0 +DA:516,0 +DA:517,0 +DA:519,0 +DA:520,0 +DA:521,0 +DA:522,0 +DA:523,0 +DA:524,0 +DA:525,0 +DA:526,0 +DA:527,0 +DA:528,0 +DA:529,0 +DA:530,0 +DA:531,0 +DA:532,0 +DA:533,0 +DA:534,0 +DA:535,0 +DA:536,0 +DA:537,0 +DA:539,0 +DA:540,0 +DA:541,0 +DA:542,0 +DA:543,0 +DA:544,0 +DA:545,0 +DA:546,0 +DA:547,0 +DA:548,0 +DA:549,0 +DA:550,0 +DA:553,0 +DA:554,0 +DA:555,0 +DA:556,0 +DA:557,0 +DA:558,0 +DA:560,0 +DA:561,0 +DA:562,0 +DA:563,0 +DA:564,0 +DA:565,0 +DA:568,0 +DA:569,0 +DA:570,0 +DA:571,0 +DA:572,0 +DA:573,0 +DA:574,0 +DA:575,0 +DA:577,0 +DA:578,0 +DA:579,0 +DA:580,0 +DA:581,0 +DA:582,0 +DA:583,0 +DA:584,0 +DA:585,0 +DA:586,0 +DA:587,0 +DA:588,0 +DA:589,0 +DA:590,0 +DA:591,0 +DA:593,0 +DA:594,0 +DA:595,0 +DA:596,0 +DA:597,0 +DA:598,0 +DA:599,0 +DA:600,0 +DA:601,0 +DA:602,0 +DA:603,0 +DA:604,0 +DA:605,0 +DA:606,0 +DA:607,0 +DA:608,0 +DA:609,0 +DA:610,0 +DA:611,0 +DA:612,0 +DA:613,0 +DA:614,0 +DA:615,0 +DA:616,0 +DA:617,0 +DA:618,0 +DA:619,0 +DA:620,0 +DA:621,0 +DA:622,0 +DA:623,0 +DA:624,0 +DA:625,0 +DA:626,0 +LH:133 +LF:410 +end_of_record +SF:config/config_test.go +FNF:0 +FNH:0 +DA:15,1 +DA:16,1 +DA:17,1 +DA:18,1 +DA:19,1 +DA:20,1 +DA:21,1 +DA:22,1 +DA:23,1 +DA:24,1 +DA:25,1 +DA:26,1 +DA:27,1 +DA:28,1 +DA:29,1 +DA:30,1 +DA:31,1 +DA:32,1 +DA:33,1 +DA:34,1 +DA:35,1 +DA:36,0 +DA:37,0 +DA:39,1 +DA:40,1 +DA:41,1 +DA:42,1 +DA:43,1 +DA:44,1 +DA:45,1 +DA:46,1 +DA:47,1 +DA:48,1 +DA:49,1 +DA:50,1 +DA:51,1 +DA:52,1 +DA:53,1 +DA:54,1 +DA:55,1 +DA:56,1 +DA:57,1 +DA:58,1 +DA:59,1 +DA:60,1 +DA:61,1 +DA:62,1 +DA:63,1 +DA:64,1 +DA:65,1 +DA:66,0 +DA:67,0 +DA:70,1 +DA:71,1 +DA:72,1 +DA:73,1 +DA:74,1 +DA:75,1 +DA:76,1 +DA:77,1 +DA:78,1 +DA:79,1 +DA:80,1 +DA:81,1 +DA:82,1 +DA:83,0 +DA:84,0 +DA:86,1 +DA:87,1 +DA:88,1 +DA:89,1 +DA:90,1 +DA:91,1 +DA:92,1 +DA:93,1 +DA:94,1 +DA:95,1 +DA:96,1 +DA:97,1 +DA:98,1 +DA:99,1 +DA:100,1 +DA:101,1 +DA:102,1 +DA:103,1 +DA:104,1 +DA:105,1 +DA:106,1 +DA:107,1 +DA:108,1 +DA:109,0 +DA:110,0 +DA:113,1 +DA:114,1 +DA:115,1 +DA:116,1 +DA:117,1 +DA:118,1 +DA:119,1 +DA:120,1 +DA:121,1 +DA:122,1 +DA:123,1 +DA:124,1 +DA:125,0 +DA:126,0 +DA:128,1 +DA:129,1 +DA:130,0 +DA:131,0 +DA:132,1 +DA:133,1 +DA:134,1 +DA:135,1 +DA:136,1 +DA:137,1 +DA:138,1 +DA:139,1 +DA:140,1 +DA:141,1 +DA:142,1 +DA:143,1 +DA:144,1 +DA:145,1 +DA:146,1 +DA:147,1 +DA:148,1 +DA:149,1 +DA:150,1 +DA:151,1 +DA:152,1 +DA:153,0 +DA:154,0 +DA:157,1 +DA:158,1 +DA:159,1 +DA:160,1 +DA:161,1 +DA:162,1 +DA:163,1 +DA:164,1 +DA:165,0 +DA:166,0 +DA:167,1 +DA:168,0 +DA:169,0 +DA:172,1 +DA:173,1 +DA:174,1 +DA:175,1 +DA:176,1 +DA:177,1 +DA:178,1 +DA:179,1 +DA:180,0 +DA:181,0 +DA:182,1 +DA:183,0 +DA:184,0 +DA:187,1 +DA:188,1 +DA:189,1 +DA:190,1 +DA:191,1 +DA:192,1 +DA:193,1 +DA:194,1 +DA:195,1 +DA:196,1 +DA:197,1 +DA:198,1 +DA:199,1 +DA:200,1 +DA:201,1 +DA:202,0 +DA:203,0 +DA:205,1 +DA:206,1 +DA:207,1 +DA:208,1 +DA:209,1 +DA:210,1 +DA:211,1 +DA:212,1 +DA:213,1 +DA:214,1 +DA:215,1 +DA:216,1 +DA:217,1 +DA:218,1 +DA:219,1 +DA:220,1 +DA:221,1 +DA:222,1 +DA:223,1 +DA:224,1 +DA:225,1 +DA:226,1 +DA:227,1 +DA:228,1 +DA:229,1 +DA:230,0 +DA:231,0 +DA:234,1 +DA:235,1 +DA:236,1 +DA:237,1 +DA:238,1 +DA:239,1 +DA:240,1 +DA:241,1 +DA:242,1 +DA:243,0 +DA:244,0 +DA:246,1 +DA:247,1 +DA:248,1 +DA:249,1 +DA:250,1 +DA:251,1 +DA:252,1 +DA:253,1 +DA:254,1 +DA:255,1 +DA:256,1 +DA:257,1 +DA:258,1 +DA:259,1 +DA:260,1 +DA:261,1 +DA:262,1 +DA:263,1 +DA:264,0 +DA:265,0 +DA:267,1 +DA:268,1 +DA:269,1 +DA:270,1 +DA:271,1 +DA:272,1 +DA:273,1 +DA:274,0 +DA:275,0 +DA:277,1 +DA:278,0 +DA:279,0 +DA:282,1 +DA:283,1 +DA:284,1 +DA:285,1 +DA:286,1 +DA:287,1 +DA:288,1 +DA:289,1 +DA:290,1 +DA:291,1 +DA:292,0 +DA:293,0 +DA:295,1 +DA:296,1 +DA:297,1 +DA:298,1 +DA:299,1 +DA:300,1 +DA:301,1 +DA:302,1 +DA:303,1 +DA:304,1 +DA:305,1 +DA:306,1 +DA:307,1 +DA:308,1 +DA:309,1 +DA:310,1 +DA:311,1 +DA:312,0 +DA:313,0 +DA:316,1 +DA:317,1 +DA:318,1 +DA:319,1 +DA:320,1 +DA:321,1 +DA:322,1 +DA:323,1 +DA:324,1 +DA:325,1 +DA:326,1 +DA:327,1 +DA:328,1 +DA:329,0 +DA:330,0 +DA:331,1 +DA:332,0 +DA:333,0 +DA:336,1 +DA:337,1 +DA:338,1 +DA:339,1 +DA:340,1 +DA:341,1 +DA:342,1 +DA:343,1 +DA:344,1 +DA:345,1 +DA:346,1 +DA:347,1 +DA:348,1 +DA:349,1 +DA:350,1 +DA:351,1 +DA:352,1 +DA:353,1 +DA:354,1 +DA:355,1 +DA:356,1 +DA:357,1 +DA:358,1 +DA:359,1 +DA:360,1 +DA:361,1 +DA:362,1 +DA:363,1 +DA:364,1 +DA:365,1 +DA:366,1 +DA:367,1 +DA:368,1 +DA:369,1 +DA:370,1 +DA:371,1 +DA:372,1 +DA:373,1 +DA:374,1 +DA:375,1 +DA:376,1 +DA:377,1 +DA:378,1 +DA:379,1 +DA:380,0 +DA:381,0 +DA:383,1 +DA:384,1 +DA:385,0 +DA:386,0 +DA:387,1 +DA:390,1 +DA:391,0 +DA:392,0 +DA:396,1 +DA:397,1 +DA:398,1 +DA:399,1 +DA:400,1 +DA:401,1 +DA:402,1 +DA:403,1 +DA:404,1 +DA:405,1 +DA:406,1 +DA:407,0 +DA:408,0 +DA:409,1 +DA:410,0 +DA:411,0 +DA:414,1 +DA:415,1 +DA:416,1 +DA:417,1 +DA:418,1 +DA:419,1 +DA:420,1 +DA:421,1 +DA:422,1 +DA:423,0 +DA:424,0 +DA:426,1 +DA:427,1 +DA:428,1 +DA:429,1 +DA:430,1 +DA:431,1 +DA:432,1 +DA:433,1 +DA:434,1 +DA:435,1 +DA:436,1 +DA:437,1 +DA:438,1 +DA:439,1 +DA:440,1 +DA:441,1 +DA:442,1 +DA:443,1 +DA:444,0 +DA:445,0 +DA:448,1 +DA:449,1 +DA:450,1 +DA:451,1 +DA:452,1 +DA:453,1 +DA:454,1 +DA:455,1 +DA:456,1 +DA:457,0 +DA:458,0 +DA:460,1 +DA:461,1 +DA:462,1 +DA:463,1 +DA:464,1 +DA:465,1 +DA:466,1 +DA:467,1 +DA:468,1 +DA:469,1 +DA:470,1 +DA:471,1 +DA:472,1 +DA:473,1 +DA:474,1 +DA:475,1 +DA:476,1 +DA:477,1 +DA:478,0 +DA:479,0 +DA:482,1 +DA:483,1 +DA:484,1 +DA:485,1 +DA:486,1 +DA:487,1 +DA:488,1 +DA:489,1 +DA:490,1 +DA:491,1 +DA:492,0 +DA:493,0 +DA:494,1 +DA:495,0 +DA:496,0 +LH:378 +LF:442 +end_of_record +SF:config/logger.go +FNF:0 +FNH:0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:30,0 +LH:0 +LF:19 +end_of_record +SF:config/proxy.go +FNF:0 +FNH:0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:35,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:48,0 +DA:51,0 +DA:52,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:56,0 +DA:57,0 +DA:58,0 +DA:60,0 +DA:61,0 +DA:64,0 +DA:65,0 +DA:66,0 +DA:67,0 +DA:68,0 +DA:69,0 +DA:70,0 +DA:71,0 +DA:72,0 +DA:73,0 +DA:74,0 +DA:75,0 +DA:76,0 +DA:77,0 +DA:78,0 +DA:79,0 +DA:80,0 +DA:81,0 +DA:82,0 +DA:83,0 +DA:84,0 +DA:85,0 +DA:86,0 +DA:89,0 +DA:90,0 +DA:91,0 +DA:92,0 +DA:93,0 +DA:94,0 +DA:95,0 +DA:96,0 +DA:97,0 +DA:98,0 +DA:99,0 +DA:100,0 +DA:101,0 +DA:102,0 +DA:103,0 +DA:104,0 +DA:105,0 +DA:106,0 +DA:107,0 +DA:108,0 +DA:109,0 +DA:110,0 +DA:113,0 +DA:114,0 +DA:115,0 +DA:116,0 +DA:117,0 +DA:118,0 +DA:119,0 +DA:120,0 +DA:121,0 +DA:124,0 +DA:125,0 +DA:126,0 +DA:127,0 +DA:128,0 +DA:130,0 +DA:131,0 +DA:134,0 +DA:135,0 +DA:136,0 +DA:137,0 +DA:138,0 +DA:140,0 +DA:141,0 +DA:142,0 +DA:143,0 +DA:144,0 +DA:145,0 +DA:146,0 +DA:147,0 +DA:148,0 +DA:149,0 +DA:150,0 +DA:151,0 +DA:152,0 +DA:153,0 +DA:154,0 +DA:157,0 +DA:158,0 +DA:159,0 +DA:160,0 +DA:161,0 +DA:163,0 +DA:164,0 +DA:165,0 +DA:166,0 +DA:167,0 +DA:168,0 +DA:169,0 +DA:170,0 +DA:171,0 +DA:172,0 +DA:175,0 +DA:178,0 +DA:179,0 +DA:180,0 +DA:181,0 +DA:182,0 +DA:183,0 +DA:184,0 +DA:185,0 +DA:186,0 +DA:187,0 +DA:188,0 +DA:190,0 +LH:0 +LF:138 +end_of_record +SF:config/s3.go +FNF:0 +FNH:0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:48,0 +DA:49,0 +DA:50,0 +DA:52,0 +DA:55,0 +DA:56,0 +DA:57,0 +DA:58,0 +DA:59,0 +DA:60,0 +DA:61,0 +DA:62,0 +DA:63,0 +DA:64,0 +DA:65,0 +LH:0 +LF:32 +end_of_record +SF:config/tls.go +FNF:0 +FNH:0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:48,0 +DA:49,0 +DA:50,0 +DA:51,0 +DA:52,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:56,0 +DA:57,0 +DA:58,0 +DA:61,0 +DA:62,0 +DA:63,0 +DA:64,0 +DA:65,0 +DA:66,0 +DA:67,0 +DA:68,0 +DA:70,0 +DA:71,0 +DA:72,0 +DA:73,0 +DA:74,0 +DA:75,0 +DA:78,0 +LH:0 +LF:60 +end_of_record diff --git a/test/lcov/java.lcov b/test/lcov/java.lcov new file mode 100644 index 00000000..820df5a4 --- /dev/null +++ b/test/lcov/java.lcov @@ -0,0 +1,39 @@ +SF:examples/java-native/src/main/java/com/example/myproject/Greeter.java +FN:25,com/example/myproject/Greeter:: ()V +FN:24,com/example/myproject/Greeter:: ()V +FN:28,com/example/myproject/Greeter::convertStreamToString (Ljava/io/InputStream;)Ljava/lang/String; +FN:35,com/example/myproject/Greeter::hello (Ljava/lang/String;)V +FN:44,com/example/myproject/Greeter::main ([Ljava/lang/String;)V +FNDA:1,com/example/myproject/Greeter:: ()V +FNDA:1,com/example/myproject/Greeter:: ()V +FNDA:0,com/example/myproject/Greeter::convertStreamToString (Ljava/io/InputStream;)Ljava/lang/String; +FNDA:1,com/example/myproject/Greeter::hello (Ljava/lang/String;)V +FNDA:1,com/example/myproject/Greeter::main ([Ljava/lang/String;)V +FNF:5 +FNH:4 +BRDA:30,0,0,- +BRDA:30,0,1,- +BRDA:37,0,0,1 +BRDA:37,0,1,0 +BRDA:45,0,0,1 +BRDA:45,0,1,1 +BRF:6 +BRH:3 +DA:24,1 +DA:25,1 +DA:28,0 +DA:29,0 +DA:30,0 +DA:35,1 +DA:36,1 +DA:37,1 +DA:38,0 +DA:40,1 +DA:41,1 +DA:44,1 +DA:45,1 +DA:46,1 +DA:47,1 +LH:11 +LF:15 +end_of_record \ No newline at end of file diff --git a/test/lcov/rust.lcov b/test/lcov/rust.lcov new file mode 100644 index 00000000..e1fff30e --- /dev/null +++ b/test/lcov/rust.lcov @@ -0,0 +1,531 @@ +SF:util/label/label.rs +FN:326,_RNCNvCscQvVXOS7Ja3_5label17name_from_package0B3_ +FN:230,_RNCNvCscQvVXOS7Ja3_5label20consume_package_name0B3_ +FN:253,_RNCNvCscQvVXOS7Ja3_5label20consume_package_names0_0B3_ +FN:238,_RNCNvCscQvVXOS7Ja3_5label20consume_package_names_0B3_ +FN:190,_RNCNvCscQvVXOS7Ja3_5label23consume_repository_name0B3_ +FN:124,_RNCNvMs_CscQvVXOS7Ja3_5labelNtB6_5Label9repo_name0B6_ +FN:293,_RNvCscQvVXOS7Ja3_5label12consume_name +FN:323,_RNvCscQvVXOS7Ja3_5label17name_from_package +FN:217,_RNvCscQvVXOS7Ja3_5label20consume_package_name +FN:151,_RNvCscQvVXOS7Ja3_5label23consume_repository_name +FN:144,_RNvCscQvVXOS7Ja3_5label3err +FN:11,_RNvCscQvVXOS7Ja3_5label7analyze +FN:24,_RNvMCscQvVXOS7Ja3_5labelNtB2_10Repository9repo_name +FN:108,_RNvMs_CscQvVXOS7Ja3_5labelNtB4_5Label11is_relative +FN:136,_RNvMs_CscQvVXOS7Ja3_5labelNtB4_5Label4name +FN:115,_RNvMs_CscQvVXOS7Ja3_5labelNtB4_5Label4repo +FN:48,_RNvMs_CscQvVXOS7Ja3_5labelNtB4_5Label7analyze +FN:129,_RNvMs_CscQvVXOS7Ja3_5labelNtB4_5Label7package +FN:122,_RNvMs_CscQvVXOS7Ja3_5labelNtB4_5Label9repo_name +FN:531,_RNvNtCscQvVXOS7Ja3_5label5testss_17test_name_parsing +FN:438,_RNvNtCscQvVXOS7Ja3_5label5testss_25test_package_name_parsing +FN:335,_RNvNtCscQvVXOS7Ja3_5label5testss_28test_repository_name_parsing +FNDA:0,_RNCNvCscQvVXOS7Ja3_5label17name_from_package0B3_ +FNDA:2,_RNCNvCscQvVXOS7Ja3_5label20consume_package_name0B3_ +FNDA:130,_RNCNvCscQvVXOS7Ja3_5label20consume_package_names0_0B3_ +FNDA:15,_RNCNvCscQvVXOS7Ja3_5label20consume_package_names_0B3_ +FNDA:69,_RNCNvCscQvVXOS7Ja3_5label23consume_repository_name0B3_ +FNDA:10,_RNCNvMs_CscQvVXOS7Ja3_5labelNtB6_5Label9repo_name0B6_ +FNDA:35,_RNvCscQvVXOS7Ja3_5label12consume_name +FNDA:0,_RNvCscQvVXOS7Ja3_5label17name_from_package +FNDA:45,_RNvCscQvVXOS7Ja3_5label20consume_package_name +FNDA:56,_RNvCscQvVXOS7Ja3_5label23consume_repository_name +FNDA:27,_RNvCscQvVXOS7Ja3_5label3err +FNDA:60,_RNvCscQvVXOS7Ja3_5label7analyze +FNDA:12,_RNvMCscQvVXOS7Ja3_5labelNtB2_10Repository9repo_name +FNDA:0,_RNvMs_CscQvVXOS7Ja3_5labelNtB4_5Label11is_relative +FNDA:8,_RNvMs_CscQvVXOS7Ja3_5labelNtB4_5Label4name +FNDA:0,_RNvMs_CscQvVXOS7Ja3_5labelNtB4_5Label4repo +FNDA:60,_RNvMs_CscQvVXOS7Ja3_5labelNtB4_5Label7analyze +FNDA:10,_RNvMs_CscQvVXOS7Ja3_5labelNtB4_5Label7package +FNDA:14,_RNvMs_CscQvVXOS7Ja3_5labelNtB4_5Label9repo_name +FNDA:1,_RNvNtCscQvVXOS7Ja3_5label5testss_17test_name_parsing +FNDA:1,_RNvNtCscQvVXOS7Ja3_5label5testss_25test_package_name_parsing +FNDA:1,_RNvNtCscQvVXOS7Ja3_5label5testss_28test_repository_name_parsing +FNF:22 +FNH:18 +DA:11,60 +DA:12,60 +DA:13,60 +DA:24,12 +DA:25,12 +DA:26,3 +DA:27,9 +DA:29,12 +DA:48,60 +DA:49,60 +DA:50,60 +DA:51,60 +DA:52,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:56,60 +DA:57,60 +DA:58,60 +DA:59,4 +DA:60,0 +DA:61,0 +DA:62,0 +DA:63,0 +DA:64,3 +DA:66,56 +DA:68,56 +DA:71,47 +DA:72,2 +DA:73,2 +DA:74,2 +DA:75,1 +DA:76,1 +DA:77,1 +DA:78,1 +DA:80,1 +DA:81,1 +DA:82,1 +DA:83,1 +DA:84,1 +DA:86,0 +DA:87,45 +DA:88,45 +DA:89,31 +DA:90,29 +DA:92,0 +DA:93,0 +DA:94,0 +DA:95,0 +DA:97,0 +DA:98,29 +DA:101,29 +DA:102,29 +DA:103,29 +DA:104,29 +DA:105,29 +DA:106,60 +DA:108,0 +DA:109,0 +DA:110,0 +DA:111,0 +DA:113,0 +DA:115,0 +DA:116,0 +DA:117,0 +DA:118,0 +DA:120,0 +DA:122,14 +DA:123,14 +DA:124,13 +DA:125,1 +DA:127,14 +DA:129,10 +DA:130,10 +DA:131,1 +DA:132,9 +DA:134,10 +DA:136,8 +DA:137,8 +DA:138,1 +DA:139,7 +DA:141,8 +DA:144,27 +DA:145,27 +DA:146,27 +DA:147,27 +DA:148,27 +DA:149,27 +DA:151,56 +DA:152,56 +DA:153,56 +DA:154,56 +DA:155,56 +DA:156,56 +DA:157,90 +DA:158,90 +DA:159,36 +DA:160,36 +DA:161,54 +DA:164,56 +DA:165,56 +DA:166,56 +DA:167,31 +DA:168,25 +DA:169,25 +DA:170,2 +DA:171,23 +DA:172,23 +DA:173,23 +DA:174,23 +DA:175,23 +DA:176,23 +DA:177,15 +DA:178,15 +DA:179,15 +DA:180,15 +DA:181,15 +DA:183,1 +DA:184,1 +DA:185,1 +DA:186,1 +DA:187,14 +DA:188,14 +DA:189,14 +DA:190,69 +DA:192,2 +DA:193,2 +DA:194,2 +DA:195,2 +DA:196,2 +DA:197,12 +DA:198,8 +DA:200,20 +DA:201,13 +DA:202,7 +DA:203,7 +DA:204,4 +DA:205,4 +DA:206,4 +DA:207,4 +DA:208,3 +DA:209,3 +DA:211,0 +DA:214,16 +DA:215,56 +DA:217,45 +DA:218,45 +DA:219,8 +DA:220,33 +DA:222,4 +DA:223,4 +DA:224,4 +DA:225,4 +DA:229,41 +DA:230,8 +DA:231,8 +DA:232,8 +DA:233,8 +DA:234,8 +DA:236,33 +DA:237,33 +DA:238,33 +DA:240,0 +DA:242,33 +DA:243,15 +DA:244,18 +DA:249,33 +DA:250,6 +DA:251,27 +DA:252,27 +DA:253,130 +DA:254,130 +DA:255,19 +DA:256,8 +DA:257,7 +DA:258,6 +DA:259,5 +DA:260,4 +DA:261,3 +DA:262,2 +DA:263,1 +DA:264,130 +DA:265,1 +DA:266,1 +DA:267,1 +DA:268,1 +DA:269,1 +DA:270,26 +DA:271,26 +DA:272,1 +DA:273,1 +DA:274,1 +DA:275,1 +DA:276,25 +DA:277,25 +DA:278,25 +DA:282,18 +DA:283,8 +DA:284,10 +DA:286,18 +DA:288,7 +DA:289,7 +DA:290,7 +DA:291,45 +DA:293,35 +DA:294,35 +DA:295,0 +DA:296,35 +DA:297,35 +DA:298,1 +DA:299,34 +DA:300,34 +DA:301,16 +DA:302,18 +DA:303,0 +DA:305,18 +DA:308,34 +DA:309,1 +DA:310,1 +DA:311,1 +DA:312,1 +DA:313,33 +DA:314,33 +DA:315,1 +DA:316,1 +DA:317,1 +DA:318,1 +DA:319,32 +DA:320,32 +DA:321,35 +DA:323,0 +DA:324,0 +DA:325,0 +DA:326,0 +DA:327,0 +DA:328,0 +DA:335,1 +DA:336,1 +DA:337,1 +DA:338,1 +DA:339,1 +DA:340,1 +DA:342,1 +DA:343,1 +DA:344,1 +DA:345,1 +DA:346,1 +DA:347,1 +DA:348,1 +DA:349,1 +DA:350,1 +DA:351,1 +DA:353,1 +DA:354,1 +DA:355,1 +DA:356,1 +DA:357,1 +DA:358,1 +DA:359,1 +DA:360,1 +DA:361,1 +DA:362,1 +DA:364,1 +DA:365,1 +DA:366,1 +DA:367,1 +DA:368,1 +DA:369,1 +DA:371,1 +DA:372,1 +DA:373,1 +DA:374,1 +DA:375,1 +DA:376,1 +DA:378,1 +DA:379,1 +DA:380,1 +DA:381,1 +DA:382,1 +DA:383,1 +DA:385,1 +DA:386,1 +DA:389,1 +DA:390,1 +DA:391,1 +DA:392,1 +DA:393,1 +DA:394,1 +DA:395,1 +DA:396,1 +DA:397,1 +DA:398,1 +DA:399,1 +DA:400,1 +DA:401,1 +DA:402,1 +DA:403,1 +DA:404,1 +DA:405,1 +DA:406,1 +DA:407,1 +DA:408,1 +DA:409,1 +DA:410,1 +DA:411,1 +DA:412,1 +DA:413,1 +DA:414,1 +DA:415,1 +DA:416,1 +DA:417,1 +DA:418,1 +DA:419,1 +DA:420,1 +DA:421,1 +DA:422,1 +DA:423,1 +DA:424,1 +DA:425,1 +DA:427,1 +DA:428,1 +DA:429,1 +DA:430,1 +DA:431,1 +DA:432,1 +DA:434,1 +DA:435,1 +DA:438,1 +DA:439,1 +DA:440,1 +DA:442,1 +DA:443,1 +DA:444,1 +DA:445,1 +DA:446,1 +DA:447,1 +DA:448,1 +DA:449,1 +DA:450,1 +DA:451,1 +DA:452,1 +DA:453,1 +DA:454,1 +DA:455,1 +DA:456,1 +DA:457,1 +DA:459,1 +DA:461,1 +DA:462,1 +DA:463,1 +DA:464,1 +DA:465,1 +DA:466,1 +DA:467,1 +DA:468,1 +DA:469,1 +DA:470,1 +DA:471,1 +DA:472,1 +DA:473,1 +DA:474,1 +DA:475,1 +DA:476,1 +DA:477,1 +DA:478,1 +DA:479,1 +DA:480,1 +DA:481,1 +DA:482,1 +DA:483,1 +DA:484,1 +DA:485,1 +DA:486,1 +DA:487,1 +DA:488,1 +DA:490,1 +DA:491,1 +DA:494,1 +DA:495,1 +DA:496,1 +DA:497,1 +DA:498,1 +DA:499,1 +DA:500,1 +DA:501,1 +DA:502,1 +DA:503,1 +DA:504,1 +DA:505,1 +DA:506,1 +DA:507,1 +DA:509,1 +DA:510,1 +DA:511,1 +DA:512,1 +DA:513,1 +DA:514,1 +DA:515,1 +DA:516,1 +DA:518,1 +DA:519,1 +DA:520,1 +DA:521,1 +DA:522,1 +DA:523,1 +DA:524,1 +DA:525,1 +DA:527,1 +DA:528,1 +DA:531,1 +DA:532,1 +DA:533,1 +DA:534,1 +DA:536,1 +DA:537,1 +DA:538,1 +DA:539,1 +DA:540,1 +DA:541,1 +DA:542,1 +DA:544,1 +DA:545,1 +DA:546,1 +DA:547,1 +DA:548,1 +DA:549,1 +DA:550,1 +DA:552,1 +DA:553,1 +DA:554,1 +DA:555,1 +DA:556,1 +DA:557,1 +DA:558,1 +DA:560,1 +DA:561,1 +DA:562,1 +DA:563,1 +DA:564,1 +DA:565,1 +DA:566,1 +DA:567,1 +DA:569,1 +DA:570,1 +DA:571,1 +DA:572,1 +DA:573,1 +DA:574,1 +DA:575,1 +DA:576,1 +DA:578,1 +DA:579,1 +DA:587,1 +DA:588,1 +DA:589,1 +DA:590,1 +DA:591,1 +DA:592,1 +DA:594,1 +DA:595,1 +LH:426 +LF:460 +end_of_record +SF:util/label/label_error.rs +FN:5,_RNvXNtCscQvVXOS7Ja3_5label11label_errorNtB2_10LabelErrorNtNtCsbrbDdEzO4k9_4core3fmt7Display3fmt +FN:17,_RNvXs0_NtCscQvVXOS7Ja3_5label11label_errorNtB5_10LabelErrorINtNtCsbrbDdEzO4k9_4core7convert4FromNtNtCs6HzPjBkKJOR_5alloc6string6StringE4from +FN:11,_RNvXs_NtCscQvVXOS7Ja3_5label11label_errorNtB4_10LabelErrorNtNtCsbrbDdEzO4k9_4core5error5Error11description +FNDA:0,_RNvXNtCscQvVXOS7Ja3_5label11label_errorNtB2_10LabelErrorNtNtCsbrbDdEzO4k9_4core3fmt7Display3fmt +FNDA:0,_RNvXs0_NtCscQvVXOS7Ja3_5label11label_errorNtB5_10LabelErrorINtNtCsbrbDdEzO4k9_4core7convert4FromNtNtCs6HzPjBkKJOR_5alloc6string6StringE4from +FNDA:0,_RNvXs_NtCscQvVXOS7Ja3_5label11label_errorNtB4_10LabelErrorNtNtCsbrbDdEzO4k9_4core5error5Error11description +FNF:3 +FNH:0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:17,0 +DA:18,0 +DA:19,0 +LH:0 +LF:9 +end_of_record diff --git a/test/lcov_parser.test.ts b/test/lcov_parser.test.ts new file mode 100644 index 00000000..15c3cf92 --- /dev/null +++ b/test/lcov_parser.test.ts @@ -0,0 +1,204 @@ +import assert = require("assert"); +import { BazelFileCoverage, parseLcov } from "../src/test-explorer/lcov_parser"; +import { readFile } from "fs/promises"; +import * as path from "path"; +import { DeclarationCoverage, StatementCoverage } from "vscode"; + +const testDir = path.join(__dirname, "../..", "test"); + +function parseTestLcov(lcov: string): BazelFileCoverage[] { + return parseLcov("/base", lcov); +} + +async function parseTestLcovFile(p: string): Promise { + const absolutePath = path.join(testDir, p); + const lcov = await readFile(absolutePath, { encoding: "utf-8" }); + return parseTestLcov(lcov); +} + +function getCoverageForFile( + cov: BazelFileCoverage[], + fileName: string, +): BazelFileCoverage | undefined { + return cov.find((c) => c.uri.fsPath === fileName); +} + +function getFunctionByLine( + cov: BazelFileCoverage, + lineNr: number, +): DeclarationCoverage | undefined { + for (const d of cov.details) { + if (!(d instanceof DeclarationCoverage)) continue; + if (!d.location) continue; + assert("line" in d.location); + if (d.location.line !== lineNr - 1) continue; + return d; + } +} + +function getLineCoverageForLine( + cov: BazelFileCoverage, + lineNr: number, +): StatementCoverage | undefined { + for (const d of cov.details) { + if (!(d instanceof StatementCoverage)) continue; + if (!d.location) continue; + assert("line" in d.location); + if (d.location.line !== lineNr - 1) continue; + return d; + } +} + +describe("The lcov parser", () => { + it("accepts an empty string", () => { + assert.deepEqual(parseTestLcov(""), []); + }); + + it("accepts Linux end-of-lines", () => { + const coveredFiles = parseTestLcov("SF:a.cpp\nFN:1,abc\nend_of_record\n"); + assert.equal(coveredFiles.length, 1); + assert.equal(coveredFiles[0].declarationCoverage.total, 1); + }); + + it("accepts Windows end-of-lines", () => { + // \r\n and no final end of line + const coveredFiles = parseTestLcov("SF:a.cpp\r\nFN:1,abc\r\nend_of_record"); + assert.equal(coveredFiles.length, 1); + assert.equal(coveredFiles[0].declarationCoverage.total, 1); + }); + + describe("parses Java coverage data:", () => { + let fileCov: BazelFileCoverage; + before(async () => { + const coveredFiles = await parseTestLcovFile("lcov/java.lcov"); + assert.equal(coveredFiles.length, 1); + fileCov = getCoverageForFile( + coveredFiles, + "/base/examples/java-native/src/main/java/com/example/myproject/" + + "Greeter.java", + ); + assert(fileCov !== undefined); + }); + it("function coverage", () => { + assert(fileCov.declarationCoverage !== undefined); + assert.strictEqual(fileCov.declarationCoverage.total, 5); + assert.strictEqual(fileCov.declarationCoverage.covered, 4); + }); + it("line coverage", () => { + assert.strictEqual(fileCov.statementCoverage.total, 15); + assert.strictEqual(fileCov.statementCoverage.covered, 11); + }); + it("branch coverage", () => { + assert(fileCov.branchCoverage === undefined); + }); + it("function coverage details", () => { + const initFunc = getFunctionByLine(fileCov, 24); + assert(initFunc !== undefined); + assert.equal(initFunc.name, "com/example/myproject/Greeter:: ()V"); + assert.equal(initFunc.executed, 1); + const convertFunc = getFunctionByLine(fileCov, 28); + assert.equal( + convertFunc.name, + "com/example/myproject/Greeter::convertStreamToString " + + "(Ljava/io/InputStream;)Ljava/lang/String;", + ); + assert.equal(convertFunc.executed, 0); + }); + it("line coverage details", () => { + assert.equal(getLineCoverageForLine(fileCov, 37).executed, 1); + assert.equal(getLineCoverageForLine(fileCov, 38).executed, 0); + assert.equal(getLineCoverageForLine(fileCov, 40).executed, 1); + }); + }); + + describe("parses C++ coverage data", () => { + let fileCov: BazelFileCoverage; + before(async () => { + const coveredFiles = await parseTestLcovFile("lcov/cpp.lcov"); + assert.equal(coveredFiles.length, 1); + fileCov = coveredFiles[0]; + }); + it("function coverage", () => { + assert(fileCov.declarationCoverage !== undefined); + assert.strictEqual(fileCov.declarationCoverage.total, 50); + assert.strictEqual(fileCov.declarationCoverage.covered, 50); + }); + it("line coverage", () => { + assert.strictEqual(fileCov.statementCoverage.total, 510); + assert.strictEqual(fileCov.statementCoverage.covered, 505); + }); + it("branch coverage", () => { + assert(fileCov.branchCoverage === undefined); + }); + it("function coverage details", () => { + const initFunc = getFunctionByLine(fileCov, 71); + assert(initFunc !== undefined); + assert.equal(initFunc.name, "_ZN5blaze10RcFileTest5SetUpEv"); + assert.equal(initFunc.executed, 34); + }); + it("line coverage details", () => { + assert.equal(getLineCoverageForLine(fileCov, 176).executed, 1); + assert.equal(getLineCoverageForLine(fileCov, 178).executed, 0); + assert.equal(getLineCoverageForLine(fileCov, 193).executed, 4); + }); + }); + + describe("parses Rust coverage data", () => { + let fileCov: BazelFileCoverage; + before(async () => { + const coveredFiles = await parseTestLcovFile("lcov/rust.lcov"); + assert.equal(coveredFiles.length, 2); + fileCov = getCoverageForFile(coveredFiles, "/base/util/label/label.rs"); + assert(fileCov !== undefined); + }); + it("function coverage", () => { + assert(fileCov.declarationCoverage !== undefined); + assert.strictEqual(fileCov.declarationCoverage.total, 22); + assert.strictEqual(fileCov.declarationCoverage.covered, 18); + }); + it("line coverage", () => { + assert.strictEqual(fileCov.statementCoverage.total, 460); + assert.strictEqual(fileCov.statementCoverage.covered, 426); + }); + it("branch coverage", () => { + assert(fileCov.branchCoverage === undefined); + }); + it("function coverage details", () => { + const consumeFunc = getFunctionByLine(fileCov, 230); + assert(consumeFunc !== undefined); + assert.equal( + consumeFunc.name, + "_RNCNvCscQvVXOS7Ja3_5label20consume_package_name0B3_", + ); + assert.equal(consumeFunc.executed, 2); + }); + it("line coverage details", () => { + assert.equal(getLineCoverageForLine(fileCov, 88).executed, 45); + assert.equal(getLineCoverageForLine(fileCov, 89).executed, 31); + }); + }); + + describe("parses Go coverage data", () => { + let fileCov: BazelFileCoverage; + before(async () => { + const coveredFiles = await parseTestLcovFile("lcov/go.lcov"); + assert.equal(coveredFiles.length, 7); + fileCov = getCoverageForFile(coveredFiles, "/base/config/config.go"); + assert(fileCov !== undefined); + }); + it("function coverage", () => { + assert(fileCov.declarationCoverage === undefined); + }); + it("line coverage", () => { + assert.strictEqual(fileCov.statementCoverage.total, 410); + assert.strictEqual(fileCov.statementCoverage.covered, 133); + }); + it("branch coverage", () => { + assert(fileCov.branchCoverage === undefined); + }); + it("line coverage details", () => { + assert.equal(getLineCoverageForLine(fileCov, 265).executed, 1); + assert.equal(getLineCoverageForLine(fileCov, 266).executed, 0); + }); + }); +}); diff --git a/tsconfig.json b/tsconfig.json index c9f1ef18..b1acc4e9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,10 +1,10 @@ { "compilerOptions": { "module": "commonjs", - "target": "es6", + "target": "es2022", "outDir": "out", "lib": [ - "es6" + "es2022", ], "sourceMap": true, "rootDir": ".",